Tous les fichiers liés à cette première partie (.tex, .pdf et .dat) sont dans l'archive :
On a donc opéré en quatre étapes :
Étape 1 :
% fabrique du bi-cône
\codejps{
-5 3 0 [18 60] newcone
5 3 0 [18 60] newcone
dup solidfacesreverse
solidfuz
(bicone) writesolidfile
}
Explications : le cône est vertical, le premier paramètre est la cote du centre de la base, le deuxième le rayon de la base et le troisième la cote du sommet du cône. Entre les crochets, on place le nombre de divisions pour la hauteur et pour la base : 18 sous-divisions pour la hauteur et 60 sous-divisions pour la base (soit un pas de 10°), c'est la définition du maillage du cône : 18x60. Plus le maillage est serré et plus le temps de calcul sera long pour la coupe du bicône par un plan, d'où l'intérêt de sauvegarder les données des deux parties obtenues lors de la partition du bicône, car, par contre, la lecture des données est très rapide, ce qui permet ensuite d'affiner la mise en page, le choix des couleurs, le point de vue, les annotations sur le schéma etc. sans être obligé d'attendre que l'interpréteur ait terminé les calculs.Cette étape enregistre sur le disque les données du bicône (bicone-sommets.dat etc.). On pourra ensuite commenter ces lignes (ajouter un % au début de chaque ligne), il est, en effet, inutile de recommencer ces calculs à chaque nouvelle compilation.
Étape 2 : la partition du bicône par un plan et l'écriture des données des deux parties ainsi obtenues.
Explications : le plan est défini par son équation ax+by+cz+d=0 avec le paramètre plansepare={[a b c d]}. Les deux parties ainsi obtenues sont réunies par un seul nom avec name=biconepartcircle (dans le cas de la section circulaire, tout autre nom est possible), chacune des parties sera indexée respectivement biconepartcircle0 et biconepartcircle1.
\psset{solidmemory}
\psSolid[object=datfile,
file=bicone,
plansepare={[0 0 1 -3]},
name=biconepartcircle,
action=none]
\psSolid[object=load,
load=biconepartcircle1,
file=biconepartcircle1,action=writesolid]
\psSolid[object=load,
load=biconepartcircle0,
file=biconepartcircle0,action=writesolid]
L'étape du calcul des caractéristiques des deux parties est la plus longue. Ensuite, lorsque les données auront été enregistrées, on pourra commenter toutes les lignes précédentes, pour se consacrer à la mise en page.
Étape 3 : l'affichage des deux parties par la lecture des données, par exemple pour la partie 1 :
\psSolid[object=datfile,
file=biconepartcircle1,
grid,
grid,
fillcolor={[rgb]{0.5 0.72 0.5}},incolor=yellow!50,
rm=0 1,
hollow]
Étape 4 : le dessin de l'intersection, cercle, ellipse, parabole ou hyperbole suivant le cas.Les équations paramétriques de l'intersection se déterminent aisément, quelques explications sont données dans les documents du sous répertoire "sections_bicone_doc" de l'archive :
Si vous souhaitez faire vous-même les calculs adaptées à votre problème particulier pour enregistrer les données, il faudra dé-commenter les lignes correspondantes.
1 - Section Circulaire :
\documentclass{article}
\usepackage{pst-solides3d}
\begin{document}
\begin{center}
\begin{pspicture}(-5,-6)(8,7)
\pstVerb{/theta 3 5 atan def
/tantheta 3 5 div def
/rayon 3 tantheta mul def}%
%\codejps{ % bicone de rayon 3 et de 1/2 hauteur 5
%-5 3 0 [24 60] newcone
% 5 3 0 [24 60] newcone
% dup solidfacesreverse
% solidfuz
%(bicone) writesolidfile
% }
\psset{viewpoint=50 -30 30 rtp2xyz,,Decran=50,lightsrc=viewpoint}
\psframe[fillstyle=solid,fillcolor=gray!50](-5,-6)(8,7)%
\psSolid[object=grille,base=-4 4 -4 8,linecolor={[rgb]{0.72 0.72 0.5}}](0,0,-5)
%\psset{solidmemory}
%\psSolid[object=datfile,
% file=bicone,
% plansepare={[0 0 1 -3]},
% name=biconepartcircle,
% action=none]
%\psSolid[object=load,
% load=biconepartcircle1,
% file=biconepartcircle1,action=writesolid]
%\psSolid[object=load,
% load=biconepartcircle0,
% file=biconepartcircle0,action=writesolid]
%
\psSolid[object=datfile,
file=biconepartcircle1,grid,
fillcolor={[rgb]{0.5 0.72 0.5}},incolor=yellow!50,
rm=0 1,
hollow]
% l'intersection
\defFunction[algebraic]{cercle}(t){rayon*cos(t)}{rayon*sin(t)}{3}
\psSolid[object=courbe,r=0,
range=0 2 pi mul,
linecolor=red,%{[rgb]{0.08 0.24 0.09}},
function=cercle]%
\psSolid[object=plan,action=draw,
definition=equation,
args={[0 0 1 -3]},
base=-3 3 -5 5,planmarks,showBase]
\psSolid[object=datfile,
file=biconepartcircle0,grid,
fillcolor={[rgb]{0.5 0.72 0.5}},incolor=yellow!50,
rm=0 1,
hollow](0,5,0)
\axesIIID[linecolor=blue](0,0,3)(4,3,6)
\composeSolid
\end{pspicture}
\end{center}
\end{document}
Éventuellement, cliquer sur "Plus d'infos" pour les autres sections.
2 - Section elliptique :
\documentclass{article}
\usepackage{pst-solides3d}
\begin{document}
\begin{center}
\begin{pspicture}(-5,-6)(8,7)
\pstVerb{/theta 3 5 atan def
/tantheta 3 5 div def
/rayon 3 tantheta mul def
/sinW 1 def
/cosW 0.5 def
/dH 3 def}%
%\codejps{ % bicone de rayon 3 et de 1/2 hauteur 5
%-5 3 0 [24 60] newcone
% 5 3 0 [24 60] newcone
% dup solidfacesreverse
% solidfuz
%(bicone) writesolidfile
% }
\psset{viewpoint=50 -10 30 rtp2xyz,,Decran=50,lightsrc=viewpoint}
\psframe[fillstyle=solid,fillcolor=gray!50](-5,-6)(8,7)%
\psSolid[object=grille,base=-4 4 -4 8,linecolor={[rgb]{0.72 0.72 0.5}}](0,0,-5)
%\psset{solidmemory}
%\psSolid[object=datfile,
% file=bicone,
% plansepare={[0 0.5 1 -3]},
% name=biconepartellipse,
% action=none]
%\psSolid[object=load,
% load=biconepartellipse1,
% file=biconepartellipse1,action=writesolid]
%\psSolid[object=load,
% load=biconepartellipse0,
% file=biconepartellipse0,action=writesolid]
%
\psSolid[object=datfile,
file=biconepartellipse1,grid,
fillcolor={[rgb]{0.5 0.72 0.5}},incolor=yellow!50,
rm=0 1,
hollow]
% l'intersection
\defFunction[algebraic]{ellipse}(t){(dH/(sinW+tantheta*cosW*sin(t)))*tantheta*cos(t)}{(dH/(sinW+tantheta*cosW*sin(t)))*tantheta*sin(t)}{dH/(sinW+tantheta*cosW*sin(t))}
\psSolid[object=courbe,r=0,
range=0 2 pi mul,
linecolor=red,%{[rgb]{0.08 0.24 0.09}},
function=ellipse]%
\psSolid[object=plan,action=draw,
definition=equation,
args={[0 0.5 1 -3]},
base=-3 3 -6 7,planmarks,showBase]
\axesIIID[linecolor=blue](0,0,3)(5,6,6)
\psSolid[object=datfile,
file=biconepartellipse0,grid,
fillcolor={[rgb]{0.5 0.72 0.5}},incolor=yellow!50,
rm=0 1,
hollow](0,5,-2.5)
%\composeSolid
\end{pspicture}
\end{center}
\end{document}
3 - Section parabolique :
\documentclass{article}
\usepackage{pst-solides3d}
\usepackage{pst-math}
\begin{document}
%\section{Section par un plan incliné en \textbackslash codejps : parabole}
\begin{center}
%% fabrique du bi-cone
%\codejps{
%-5 3 0 [18 60] newcone
% 5 3 0 [18 60] newcone
% dup solidfacesreverse
% solidfuz
%(bicone) writesolidfile
% }
\begin{pspicture}(-5,-6)(8,7)
\psset{viewpoint=50 -50 20 rtp2xyz,Decran=50}
\psset{lightsrc=viewpoint}
\psframe[fillstyle=solid,fillcolor=gray!50](-5,-6)(8,7)%
\psSolid[object=grille,base=-4 4 -4 8,linecolor={[rgb]{0.72 0.72 0.5}}](0,0,-5)
\codejps{
solidlightOn
/solidgrid false def
%(bicone) readsolidfile
%[30.9638 cos 0 30.9638 sin -1] solidplansepare
%exch
%{0 0 90 rotateOpoint3d} solidtransform
%{0 5 0 translatepoint3d} solidtransform
%(biconeplaninclineparabole-part0) writesolidfile
%(biconeplaninclineparabole-part1) writesolidfile
(biconeplaninclineparabole-part0) readsolidfile
dup (0.7 1 0.7 setrgbcolor) outputcolors
dup 0 (0.8 0.8 0.3 setrgbcolor) solidputfcolor
dup 1 (0.8 0.8 0.3 setrgbcolor) solidputfcolor
drawsolid**
(biconeplaninclineparabole-part1) readsolidfile
dup (0.7 1 0.7 setrgbcolor) outputcolors
dup 0 (0.8 0.8 0.3 setrgbcolor) solidputfcolor
drawsolid**
}
\psSolid[object=plan,action=draw,
definition=equation,
args={[30.9638 cos 0 30.9638 sin -1] 90},
base=-3 3 -7.4 3.65,planmarks,showBase]
\psSolid[object=plan,action=draw,
definition=normalpoint,
args={0 30.9638 cos 5 add 30.9638 sin [0 30.9638 cos neg 30.9638 sin neg 0]},
base=-3 3 -7.5 5.25,planmarks,showBase]
\pstVerb{/sinTheta 3 3 dup mul 5 dup mul add sqrt div def}%
\defFunction[algebraic]{parabole}(t)%
{cos(t)*0.6/sinTheta/(1+cos(t))}{sin(t)*0.6/sinTheta/(1+cos(t))} {1/sinTheta/(1+cos(t))}
\psSolid[object=courbe,
r=0,
range=-2.228 2.228,
linecolor=red,
function=parabole,
RotZ=90
](0,5,0)
\psSolid[object=courbe,
r=0,
range=-2.228 2.228,
linecolor=red,
function=parabole
]
\axesIIID[linecolor=blue](0,0,2)(4,3,6)
\end{pspicture}
\end{center}
\end{document}
4 - Section hyperbolique :
\documentclass{article}
\usepackage{pst-solides3d}
\usepackage{pst-math}
\begin{document}
%\section{Section par un plan incliné en \textbackslash codejps : hyperbole}
\begin{center}
% fabrique du bi-cone
%\codejps{
%-5 3 0 [18 60] newcone
% 5 3 0 [18 60] newcone
% dup solidfacesreverse
% solidfuz
%(bicone) writesolidfile
% }
\begin{pspicture}(-5,-6)(8,7)
\psset{viewpoint=50 -30 15 rtp2xyz,Decran=50}
\psset{lightsrc=viewpoint}
\psframe[fillstyle=solid,fillcolor=gray!50](-5,-6)(8,7)%
\psSolid[object=grille,base=-4 4 -4 8,linecolor={[rgb]{0.72 0.72 0.5}}](0,0,-5)
\codejps{
solidlightOn
/solidgrid false def
%(bicone) readsolidfile
%[20 cos 0 20 sin -0.25] solidplansepare
%exch
%{0 0 90 rotateOpoint3d} solidtransform
%{0 5 0 translatepoint3d} solidtransform
%(biconehyperbole-part0) writesolidfile
%(biconehyperbole-part1) writesolidfile
(biconehyperbole-part0) readsolidfile
dup (0.7 1 0.7 setrgbcolor) outputcolors
dup 0 (0.8 0.8 0.3 setrgbcolor) solidputfcolor
dup 1 (0.8 0.8 0.3 setrgbcolor) solidputfcolor
drawsolid**
(biconehyperbole-part1) readsolidfile
dup (0.7 1 0.7 setrgbcolor) outputcolors
dup 0 (0.8 0.8 0.3 setrgbcolor) solidputfcolor
dup 1 (0.8 0.8 0.3 setrgbcolor) solidputfcolor
drawsolid**
}
\defFunction[algebraic]{Hyp1}(t)%
{cos(t)*0.6*0.25/(0.6*0.9397*cos(t)+0.342)}{sin(t)*0.6*0.25/(0.6*0.9397*cos(t)+0.342)} {0.25/(0.6*0.9397*cos(t)+0.342)}
\psSolid[object=courbe,
r=0,
range=-2.115 2.115,
linecolor=red,
function=Hyp1,
RotZ=90
](0,5,0)
\psSolid[object=courbe,
r=0,
range=-2.115 2.115,
linecolor=red,
function=Hyp1
]
\defFunction[algebraic]{Hyp2}(t)%
{-cos(t)*0.6*0.25/(-0.6*0.9397*cos(t)+0.342)}{-sin(t)*0.6*0.25/(-0.6*0.9397*cos(t)+0.342)} {0.25/(-0.6*0.9397*cos(t)+0.342)}
\psSolid[object=courbe,
r=0,
range=-0.8 0.8,
linecolor=red,
function=Hyp2,
RotZ=90
](0,5,0)
\psSolid[object=courbe,
r=0,
range=-0.8 0.8,
linecolor=red,
function=Hyp2
]
\psSolid[object=plan,action=draw,
definition=equation,
args={[20 cos 0 20 sin -0.25] 90},
base=-3 3 -6.1 4.6,planmarks,showBase]
\psSolid[object=plan,action=draw,
definition=normalpoint,
args={0 20 cos 0.25 mul 5 add 20 sin 0.25 mul [0 20 cos neg 20 sin neg 0]},
base=-3 3 -5.5 5.23,planmarks,showBase]
\axesIIID[linecolor=blue](0,0,0)(4,3,6)
\end{pspicture}
\end{center}
\end{document}
i need help
RépondreSupprimerSee the pst-solides3d documentation (Chapter 5 Use of external files) or http://tug.org/PSTricks/main.cgi/:
Supprimer<<
By default, under Windows and Linux, the security of files on the hard drive is activated
and doesn’t allow to write on the drive. To deactivate that security option, more or less temporarily, here the two corresponding procedures:
Linux: The advice from Jean-Michel Sarlat: the simplest will be to use GhostScript directly, within the console. As there is no image to wait for:
$> gs -dNOSAFER monfichier.ps quit.ps
Windows: Within the menue Options, the option Security of files must be turned to unchecked.
i tried to $> gs -dNOSAFER monfichier.ps quit.ps in consele of ubuntu, but not funtion, the console produce error,any idea?
Supprimerthe console produce:
RépondreSupprimerGPL Ghostscript 9.10 (2013-08-30)
Copyright (C) 2013 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Error: /undefinedfilename in (monfichier.ps)
Operand stack:
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push
Dictionary stack:
--dict:1172/1684(ro)(G)-- --dict:0/20(G)-- --dict:77/200(L)--
Current allocation mode is local
Last OS error: No such file or directory
GPL Ghostscript 9.10: Unrecoverable error, exit code 1
In a first step, we must remove% at the beginning of the lines: LaTeX-> DVIPS-> gs or ps2pdf
Supprimer