Changeset 45
- Timestamp:
- 06/13/08 09:35:56 (6 months ago)
- Files:
-
- trunk/doc/ex-mobius2.tex (modified) (2 diffs)
- trunk/doc/geode30-couleurs.dat (added)
- trunk/doc/geode30-faces.dat (added)
- trunk/doc/geode30-io.dat (added)
- trunk/doc/geode30-sommets.dat (added)
- trunk/doc/geode31-couleurs.dat (added)
- trunk/doc/geode31-faces.dat (added)
- trunk/doc/geode31-io.dat (added)
- trunk/doc/geode31-sommets.dat (added)
- trunk/doc/geode32-couleurs.dat (added)
- trunk/doc/geode32-faces.dat (added)
- trunk/doc/geode32-io.dat (added)
- trunk/doc/geode32-sommets.dat (added)
- trunk/doc/geode33-couleurs.dat (added)
- trunk/doc/geode33-faces.dat (added)
- trunk/doc/geode33-io.dat (added)
- trunk/doc/geode33-sommets.dat (added)
- trunk/doc/geode34-couleurs.dat (added)
- trunk/doc/geode34-faces.dat (added)
- trunk/doc/geode34-io.dat (added)
- trunk/doc/geode34-sommets.dat (added)
- trunk/doc/geode50-couleurs.dat (added)
- trunk/doc/geode50-faces.dat (added)
- trunk/doc/geode50-io.dat (added)
- trunk/doc/geode50-sommets.dat (added)
- trunk/doc/geode51-couleurs.dat (added)
- trunk/doc/geode51-faces.dat (added)
- trunk/doc/geode51-io.dat (added)
- trunk/doc/geode51-sommets.dat (added)
- trunk/doc/geode52-couleurs.dat (added)
- trunk/doc/geode52-faces.dat (added)
- trunk/doc/geode52-io.dat (added)
- trunk/doc/geode52-sommets.dat (added)
- trunk/doc/geode53-couleurs.dat (added)
- trunk/doc/geode53-faces.dat (added)
- trunk/doc/geode53-io.dat (added)
- trunk/doc/geode53-sommets.dat (added)
- trunk/doc/geodedual30-couleurs.dat (added)
- trunk/doc/geodedual30-faces.dat (added)
- trunk/doc/geodedual30-io.dat (added)
- trunk/doc/geodedual30-sommets.dat (added)
- trunk/doc/geodedual32-couleurs.dat (added)
- trunk/doc/geodedual32-faces.dat (added)
- trunk/doc/geodedual32-io.dat (added)
- trunk/doc/geodedual32-sommets.dat (added)
- trunk/doc/geodedual34-couleurs.dat (added)
- trunk/doc/geodedual34-faces.dat (added)
- trunk/doc/geodedual34-io.dat (added)
- trunk/doc/geodedual34-sommets.dat (added)
- trunk/doc/geodedual42-couleurs.dat (added)
- trunk/doc/geodedual42-faces.dat (added)
- trunk/doc/geodedual42-io.dat (added)
- trunk/doc/geodedual42-sommets.dat (added)
- trunk/doc/geodedual44-couleurs.dat (added)
- trunk/doc/geodedual44-faces.dat (added)
- trunk/doc/geodedual44-io.dat (added)
- trunk/doc/geodedual44-sommets.dat (added)
- trunk/doc/geodedual50-couleurs.dat (added)
- trunk/doc/geodedual50-faces.dat (added)
- trunk/doc/geodedual50-io.dat (added)
- trunk/doc/geodedual50-sommets.dat (added)
- trunk/doc/geodedual51-couleurs.dat (added)
- trunk/doc/geodedual51-faces.dat (added)
- trunk/doc/geodedual51-io.dat (added)
- trunk/doc/geodedual51-sommets.dat (added)
- trunk/doc/geodedual52-couleurs.dat (added)
- trunk/doc/geodedual52-faces.dat (added)
- trunk/doc/geodedual52-io.dat (added)
- trunk/doc/geodedual52-sommets.dat (added)
- trunk/doc/geodedual53-couleurs.dat (added)
- trunk/doc/geodedual53-faces.dat (added)
- trunk/doc/geodedual53-io.dat (added)
- trunk/doc/geodedual53-sommets.dat (added)
- trunk/doc/horoptere-couleurs.dat (added)
- trunk/doc/horoptere-faces.dat (added)
- trunk/doc/horoptere-io.dat (added)
- trunk/doc/horoptere-sommets.dat (added)
- trunk/doc/par-affinage.tex (modified) (1 diff)
- trunk/doc/par-anneaux.tex (modified) (3 diffs)
- trunk/doc/par-chanfrein.tex (modified) (1 diff)
- trunk/doc/par-changements.tex (modified) (1 diff)
- trunk/doc/par-courbeR3.tex (modified) (1 diff)
- trunk/doc/par-datfile.tex (added)
- trunk/doc/par-definirfacesolideproj.tex (modified) (3 diffs)
- trunk/doc/par-fusionjps.tex (modified) (2 diffs)
- trunk/doc/par-geode.tex (modified) (1 diff)
- trunk/doc/par-lignedeniveau.tex (modified) (3 diffs)
- trunk/doc/par-new.tex (modified) (1 diff)
- trunk/doc/par-point.tex (added)
- trunk/doc/par-section.tex (modified) (1 diff)
- trunk/doc/par-solidespredefinis.tex (modified) (2 diffs)
- trunk/doc/par-surfaces.tex (modified) (1 diff)
- trunk/doc/par-tronque.tex (modified) (1 diff)
- trunk/doc/par-tube.tex (added)
- trunk/doc/par-vecteur.tex (added)
- trunk/doc/pst-solides3d-doc.log (added)
- trunk/doc/pst-solides3d-doc.pdf (modified) (previous)
- trunk/doc/pst-solides3d-doc.tex (modified) (7 diffs)
- trunk/doc/pst-solides3d.tex (deleted)
- trunk/tests/test_14.pdf (added)
- trunk/tests/test_14.tex (added)
- trunk/tests/test_17.pdf (added)
- trunk/tests/test_17.tex (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/doc/ex-mobius2.tex
r2 r45 47 47 \psSolid[object=grille,base=-2.5 2.5 -2.5 2.5,ngrid=0.25,linewidth=0.5\pslinewidth](0,0,-0.25) 48 48 \defFunction[algebraic]{mobius1}(t){(2+0.25*cos(t))*cos(2*t)}{(2+0.25*cos(t))*sin(2*t)}{0.25*sin(t)} 49 \psSolid[object=courbe, 49 \psSolid[object=courbe,r=0, 50 50 linewidth=0.1, 51 51 resolution=360,range=0 pi, … … 53 53 function=mobius1]% 54 54 \defFunction[algebraic]{mobius2}(t){(2-0.25*cos(t))*cos(2*t)}{(2-0.25*cos(t))*sin(2*t)}{-0.25*sin(t)} 55 \psSolid[object=courbe, 55 \psSolid[object=courbe,r=0, 56 56 linewidth=0.1, 57 57 resolution=360,range=0 pi, trunk/doc/par-affinage.tex
r30 r45 1 \section {Affiner d'un solide} 1 \section {Affiner un solide} 2 3 Nous désignerons par \textsl{affinage de rapport $k$} l'opération qui, 4 pour une face donnée de centre $G$, consiste à effectuer sur cette 5 face une homothétie de rapport $k$ et de centre $G$, puis à diviser la 6 face originelle en utilisant cette nouvelle face. 7 8 Par exemple, voici un cube ayant subi un affinage de rapport $0,8$ sur 9 sa face supérieure~: 10 \begin{center} 11 \psset{unit=0.5} 12 \psset{lightsrc=10 0 10,SphericalCoor=true,viewpoint=50 -20 30,Decran=50} 13 \begin{pspicture*}(-4,-4)(4,4) 14 \psframe(-4,-4)(4,4) 15 \psSolid[object=cube, 16 fillcolor=red, 17 affinagerm, 18 fcolor=Yellow, 19 affinage=0] 20 \end{pspicture*} 21 \end{center} 22 23 L'option \verb+affinage+ permet d'affiner les faces soit 24 globalement, soit individuellement. Cette option utilise l'argument 25 \verb+affinagecoeff+ (valeur $0, 8$ par défaut) qui indique le rapport 26 $k$ utiliser pour l'affinage ($0<k<1$). 27 % 28 \begin{itemize} 29 \item \texttt{[affinage=all]} affine toutes les faces ; 30 \item \texttt{[affinage=0 1 2 3]} affine les faces \texttt{[0,1,2 et 3]} ; 31 \end{itemize} 32 33 Lorsqu'un face se trouve affinée, le comportement par défaut supprime la face 34 centrale obtenue. L'option \verb+affinagerm+ permet de conserver cette 35 face centrale. 36 37 Si on conserve la face centrale, elle est par défaut de la couleur de 38 la face originelle. L'option \verb+fcolor+ permet de spécifier une 39 couleur de remplacement. 40 41 \begin{multicols}{2} 42 \psset{unit=0.5} 43 \setlength{\columnseprule}{1pt} 44 \centerline{ 45 \psset{lightsrc=10 0 10,SphericalCoor=true,viewpoint=50 -20 30,Decran=50} 46 \begin{pspicture*}(-5,-4)(6,5) 47 \psframe(-5,-4)(6,5) 48 \psSolid[object=cube, 49 fillcolor=cyan, 50 incolor=red, 51 hollow, 52 affinage=0] 53 \end{pspicture*}} 54 \begin{verbatim} 55 \psSolid[object=cube, 56 fillcolor=cyan, 57 incolor=red, 58 hollow, 59 affinage=0] 60 \end{verbatim} 61 % 62 \columnbreak 63 % 64 \centerline{ 65 \begin{pspicture*}(-5,-4)(6,5) 66 \psset{lightsrc=10 0 10,SphericalCoor=true,viewpoint=50 -20 30,Decran=50} 67 \psframe(-5,-4)(6,5) 68 \psSolid[object=cube, 69 fillcolor=cyan, 70 affinagecoeff=.5, 71 affinagerm, 72 fcolor=.5 setfillopacity Yellow, 73 hollow, 74 affinage=all] 75 \end{pspicture*}} 76 \begin{verbatim} 77 \psSolid[object=cube, 78 fillcolor=cyan, 79 affinagecoeff=.5, 80 affinagerm, 81 fcolor=.5 setfillopacity Yellow, 82 hollow, 83 affinage=all] 84 \end{verbatim} 85 \end{multicols} 86 87 trunk/doc/par-anneaux.tex
r2 r45 87 87 \end{pspicture} 88 88 \end{center} 89 \begin{verbatim} 90 \begin{pspicture}(-5,-6)(5,6) 91 \psframe(-5,-4)(5,4) 92 \psset[pst-solides3d]{SphericalCoor,viewpoint=50 20 40,% 93 Decran=25,lightsrc=10 20 20} 89 %% \begin{verbatim} 90 %% \begin{pspicture}(-5,-6)(5,6) 91 %% \psframe(-5,-4)(5,4) 92 %% \psset[pst-solides3d]{SphericalCoor,viewpoint=50 20 40,% 93 %% Decran=25,lightsrc=10 20 20} 94 %% \psSolid[object=anneau,fillcolor=cyan,h=3,R=8,r=6,ngrid=4,RotX=10](0,0,0) 95 %% \end{pspicture} 96 %% %% 97 %% \begin{pspicture}(-5,-6)(5,5) 98 %% \psframe(-5,-4)(5,4) 99 %% \psset[pst-solides3d]{SphericalCoor,viewpoint=50 -20 -40,% 100 %% Decran=25,lightsrc=-10 -20 -20} 101 %% \psSolid[object=anneau,fillcolor=yellow,h=3,R=8,r=6,RotX=90,RotZ=10](0,0,0) 102 %% \end{pspicture} 103 %% \end{verbatim} 104 \begin{verbatim} 94 105 \psSolid[object=anneau,fillcolor=cyan,h=3,R=8,r=6,ngrid=4,RotX=10](0,0,0) 95 \end{pspicture} 96 %% 97 \begin{pspicture}(-5,-6)(5,5) 98 \psframe(-5,-4)(5,4) 99 \psset[pst-solides3d]{SphericalCoor,viewpoint=50 -20 -40,% 100 Decran=25,lightsrc=-10 -20 -20} 106 %% 101 107 \psSolid[object=anneau,fillcolor=yellow,h=3,R=8,r=6,RotX=90,RotZ=10](0,0,0) 102 \end{pspicture} 103 \end{verbatim} 108 \end{verbatim} 109 110 \newpage 104 111 105 112 \subsection {Un simple anneau à section triangulaire} … … 139 146 \end{center} 140 147 141 \newpage148 %\newpage 142 149 143 150 \subsection {Un anneau variable à section triangulaire} … … 201 208 \end{pspicture} 202 209 \end{center} 203 \begin{verbatim} 204 \begin{pspicture}(-5,-6)(5,6) 205 \psframe(-5,-4)(5,4) 206 \psset[pst-solides3d]{SphericalCoor,viewpoint=50 20 40,% 207 Decran=25,lightsrc=10 20 20} 210 %% \begin{verbatim} 211 %% \begin{pspicture}(-5,-6)(5,6) 212 %% \psframe(-5,-4)(5,4) 213 %% \psset[pst-solides3d]{SphericalCoor,viewpoint=50 20 40,% 214 %% Decran=25,lightsrc=10 20 20} 215 %% \psSolid[object=anneau,section=\SectionTriangulaire,% 216 %% fillcolor=cyan,h=3,R=8,r=4,RotX=10](0,0,0) 217 %% \end{pspicture} 218 %% %% 219 %% \begin{pspicture}(-5,-6)(5,5) 220 %% \psframe(-5,-4)(5,4) 221 %% \psset[pst-solides3d]{SphericalCoor,viewpoint=50 -20 -40,% 222 %% Decran=25,lightsrc=-10 -20 -20} 223 %% \psSolid[object=anneau,section=\SectionTriangulaire,% 224 %% fillcolor=yellow,h=3,R=8,r=4,RotX=-90,RotZ=10](0,0,0) 225 %% \end{pspicture} 226 %% \end{verbatim} 227 \begin{verbatim} 208 228 \psSolid[object=anneau,section=\SectionTriangulaire,% 209 229 fillcolor=cyan,h=3,R=8,r=4,RotX=10](0,0,0) 210 \end{pspicture} 211 %% 212 \begin{pspicture}(-5,-6)(5,5) 213 \psframe(-5,-4)(5,4) 214 \psset[pst-solides3d]{SphericalCoor,viewpoint=50 -20 -40,% 215 Decran=25,lightsrc=-10 -20 -20} 230 %% 216 231 \psSolid[object=anneau,section=\SectionTriangulaire,% 217 232 fillcolor=yellow,h=3,R=8,r=4,RotX=-90,RotZ=10](0,0,0) 218 \end{pspicture}219 233 \end{verbatim} 220 234 trunk/doc/par-chanfrein.tex
r30 r45 1 1 \section {Chanfreiner un solide} 2 3 \begin{multicols}{3} 4 \begin{center} 5 \psset{unit=0.5} 6 \psset{lightsrc=10 0 10,SphericalCoor=true,viewpoint=50 -20 30,Decran=50} 7 \begin{pspicture*}(-4,-4)(4,4) 8 \psframe(-4,-4)(4,4) 9 \psSolid[object=cube, 10 a=5, 11 fillcolor=red, 12 ] 13 \end{pspicture*} 14 \end{center} 15 \columnbreak 16 \begin{center} 17 \psset{unit=0.5} 18 \psset{lightsrc=10 0 10,SphericalCoor=true,viewpoint=50 -20 30,Decran=50} 19 \begin{pspicture*}(-4,-4)(4,4) 20 \psframe(-4,-4)(4,4) 21 \psSolid[object=cube, 22 a=5, 23 fillcolor=red, 24 chanfrein, 25 chanfreincoeff=.6, 26 ] 27 \end{pspicture*} 28 \end{center} 29 \columnbreak 30 \begin{verbatim} 31 \psSolid[object=cube, 32 a=5, 33 fillcolor=red, 34 chanfrein, 35 chanfreincoeff=.6, 36 ] 37 \end{verbatim} 38 \end{multicols} 39 40 L'option \verb+chanfrein+ permet de chanfreiner un solide. Cette 41 option utilise l'argument \verb+chanfreincoeff+ (valeur $0,2$ par 42 défaut) qui indique le rapport $k$ à utiliser ($0<k<1$). Ce rapport 43 est celui d'une homothétie de cetre le centre de la face considérée. 44 45 \begin{multicols}{3} 46 \begin{center} 47 \psset{unit=0.5} 48 \psset{lightsrc=10 0 10,SphericalCoor=true,viewpoint=50 -20 30,Decran=30} 49 \begin{pspicture*}(-4,-4)(4,4) 50 \psframe(-4,-4)(4,4) 51 \psSolid[object=dodecahedron, 52 a=5, 53 fillcolor=cyan, 54 ] 55 \end{pspicture*} 56 \end{center} 57 \columnbreak 58 \begin{center} 59 \psset{unit=0.5} 60 \psset{lightsrc=10 0 10,SphericalCoor=true,viewpoint=50 -20 30,Decran=30} 61 \begin{pspicture*}(-4,-4)(4,4) 62 \psframe(-4,-4)(4,4) 63 \psSolid[object=dodecahedron, 64 a=5, 65 fillcolor=cyan, 66 chanfrein, 67 chanfreincoeff=.8, 68 ] 69 \end{pspicture*} 70 \end{center} 71 \columnbreak 72 \begin{verbatim} 73 \psSolid[object=dodecahedron, 74 a=5, 75 fillcolor=cyan, 76 chanfrein, 77 chanfreincoeff=.8, 78 ] 79 \end{verbatim} 80 \end{multicols} 81 82 83 %\newpage trunk/doc/par-changements.tex
r30 r45 10 10 \item L'option \verb+resolution+ de l'objet \verb+courbe+ est 11 11 remplacée par l'option \verb+ngrid+ 12 13 \item Suppression des arguments \verb+tracelignedeniveau+ et 14 associés. 12 15 13 16 \end {itemize} trunk/doc/par-courbeR3.tex
r30 r45 1 \section {Courbes de fonctions de $R$ vers $R^3$ -- Tubes}1 \section {Courbes de fonctions de $R$ vers $R^3$} 2 2 3 3 %% \section{Fonctions R --> R\textsuperscript{3}} trunk/doc/par-definirfacesolideproj.tex
r2 r45 21 21 22 22 \begin{multicols}{2} 23 24 23 \bgroup 25 24 \psset{unit=0.75} 26 25 \psset{lightsrc=10 0 10,SphericalCoor=true,viewpoint=50 -20 20,Decran=50} 27 \begin{pspicture}(-4,- 5)(4,5)28 \psframe(-4,- 5)(5,5)26 \begin{pspicture}(-4,-6)(4,6) 27 \psframe(-4,-6)(5,6) 29 28 \psset{solidmemory} 30 \defFunction[algebraic]{f }(x){cos(x)}{sin(x)}{}29 \defFunction[algebraic]{f1}(x){cos(x)}{sin(x)}{} 31 30 \psSolid[object=grille, 32 31 RotY=90, … … 41 40 linecolor=yellow,linewidth=0.1, 42 41 solidname=A1,no=0, 43 function=f ]42 function=f1] 44 43 \psProjection[object=courbeR2, 45 44 range=-1.57 pi, 46 45 linecolor=red,linewidth=0.1, 47 46 solidname=A1,no=0, 48 function=f ](0,0,0)47 function=f1](0,0,0) 49 48 \composeSolid 50 49 \end{pspicture} … … 54 53 55 54 \begin{verbatim} 55 \psset{lightsrc=10 0 10,SphericalCoor=true,viewpoint=50 -20 20,Decran=50} 56 \begin{pspicture}(-4,-6)(4,6) 57 \psframe(-4,-6)(5,6) 56 58 \psset{solidmemory} 57 \defFunction[algebraic]{f }(x){cos(x)}{sin(x)}{}59 \defFunction[algebraic]{f1}(x){cos(x)}{sin(x)}{} 58 60 \psSolid[object=grille, 59 RotY=90,ngrid=2., 61 RotY=90, 62 ngrid=2., 60 63 base=-4 4 -4 4, 61 64 fontsize=20, 62 65 numfaces=all, 63 name=A1](0,0,0) 66 name=A1, 67 ](0,0,0) 64 68 \psProjection[object=courbeR2, 65 69 range=-1.57 pi, 66 70 linecolor=yellow,linewidth=0.1, 67 71 solidname=A1,no=0, 68 function=f ]72 function=f1] 69 73 \psProjection[object=courbeR2, 70 74 range=-1.57 pi, 71 75 linecolor=red,linewidth=0.1, 72 76 solidname=A1,no=0, 73 function=f ](0,0,0)77 function=f1](0,0,0) 74 78 \composeSolid 79 \end{pspicture} 75 80 \end{verbatim} 81 \end {multicols} 82 %% 83 %% \vfill 76 84 77 \end {multicols}78 trunk/doc/par-fusionjps.tex
r2 r45 552 552 CS drawsolid**} 553 553 \psPoint(0,0,0){O} 554 \psSolid[object=courbe, 554 \psSolid[object=courbe,r=0, 555 555 function=F, 556 556 range=0 360, … … 582 582 CS drawsolid**} 583 583 \psPoint(0,0,0){O} 584 \psSolid[object=courbe, 584 \psSolid[object=courbe,r=0, 585 585 function=F, 586 586 range=0 360, trunk/doc/par-geode.tex
r30 r45 1 \section {Géodes} 1 \section {Les géodes et leurs duales} 2 3 \subsection{Présentation mathématique} 4 5 D'excellentes études sur les géodes et leurs duales sont disponibles 6 sur les sites suivants~: 7 8 \centerline{\url{http://fr.wikipedia.org/wiki/G\%C3\%A9ode}} 9 10 Le paramétrage d'une géode est fidèle aux indications de la page : 11 12 \centerline{\url{http://hypo.ge-dip.etat-ge.ch/www/math/html/amch104.html}} 13 14 << \textit{On peut définir une géode à partir de deux paramètres : un 15 numéro $N$ indiquant le type de polyèdre initial ($N = 3$ pour le 16 tétraèdre, $N = 4$ pour l'octaèdre et $N = 5$ pour l'icosaèdre) et 17 un nombre $n$ indiquant le nombre de divisions le long de l'arête.} 18 >> 19 20 L'article \textit{Indexing the Sphere with the Hierarchical Triangular Mesh} 21 décrit une méthode permettant d'obtenir une représentation des géodes : 22 23 \centerline{\url{http://research.microsoft.com/research/pubs/view.aspx?msr_tr_id=MSR-TR-2005-123}} 24 25 \subsection{Construction avec pst-solides3d} 26 27 Deux approches sont possibles pour construire une géode ou sa duale~: 28 soit \textsl{via\/} \verb+\codejps+, soit en utilisant les objets de 29 \verb+\psSolid+. 30 31 Pour une géode, les codes 32 \begin{verbatim} 33 \codejps{N n newgeode drawsolid**} 34 \end{verbatim} 35 et 36 \begin{verbatim} 37 \psSolid[object=geode,ngrid=N n] 38 \end{verbatim} 39 sont équivalents. Et pour sa duale, les codes 40 Pour une géode, les codes 41 \begin{verbatim} 42 \codejps{N n newdualgeode drawsolid**} 43 \end{verbatim} 44 et 45 \begin{verbatim} 46 \psSolid[object=geode,dualreg,ngrid=N n] 47 \end{verbatim} 48 sont équivalents. 49 50 51 52 \subsection{Quelques exemples de géodes et de duales} 53 54 \begin{LTXexample}[pos=t] 55 \psset{SphericalCoor=true,viewpoint=50 -20 30,Decran=100} 56 \begin{pspicture}(-3,-3)(3,3) 57 \psframe(-3,-3)(3,3) 58 \psSolid[object=geode, 59 ngrid=5 0] 60 %\codejps{5 0 newgeode drawsolid**} 61 \psframe*(-2,-2.8)(2,-2.2) 62 \rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=0}}} 63 \end{pspicture} 64 \hfill 65 \begin{pspicture}(-3,-3)(3,3) 66 \psframe(-3,-3)(3,3) 67 \psSolid[object=geode, 68 dualreg, 69 ngrid=5 0] 70 %\codejps{5 0 newdualgeode drawsolid**} 71 \psframe*(-2,-2.8)(2,-2.2) 72 \rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=0}}} 73 \end{pspicture} 74 \end{LTXexample} 75 76 \begin{LTXexample}[pos=t] 77 \psset{SphericalCoor=true,viewpoint=50 -20 30,Decran=100} 78 \begin{pspicture}(-3,-3)(3,3) 79 \psframe(-3,-3)(3,3) 80 \psSolid[object=geode, 81 ngrid=5 1] 82 %\codejps{5 1 newgeode drawsolid**} 83 \psframe*(-2,-2.8)(2,-2.2) 84 \rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=1}}} 85 \end{pspicture} 86 \hfill 87 \begin{pspicture}(-3,-3)(3,3) 88 \psframe(-3,-3)(3,3) 89 \psSolid[object=geode, 90 dualreg, 91 ngrid=5 1] 92 %\codejps{5 1 newdualgeode drawsolid**} 93 \psframe*(-2,-2.8)(2,-2.2) 94 \rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=1}}} 95 \end{pspicture} 96 \end{LTXexample} 97 98 \subsection{Les paramètres des géodes} 99 100 Le rayon de la sphère est fixé à 1, pour augmenter la taille des 101 géodes on jouera sur l'un ou l'autre des deux paramètres suivants~: 102 \begin{itemize} 103 \item l'unité : \verb+\psset{unit=2}+ 104 \item la position de l'écran : 105 \verb+viewpoint=50 -20 30,Decran=100+, si la distance de l'écran 106 est deux fois plus grande que la distance 107 à laquelle se trouve l'observateur l'échelle de la scène est multipliée par~2. 108 \end{itemize} 109 110 \encadre{En jps, le paramétrages'effectue pour 111 la géode dans le \textbackslash{}codejps\{\textbf{N n newgeode}\} et 112 pour sa duale dans \textbackslash{}codejps\{\textbf{N n 113 newdualgeode}\}.} 114 115 \encadre{Avec \textbackslash{}psSolid, les paramètres $N$ et $n$ sont transmis 116 via l'argument \texttt{ngrid}} 117 118 Les options de couleurs et de transparence sont bien sûr possibles avec les géodes. 119 120 \begin{LTXexample}[pos=t] 121 \psset{unit=2} 122 \psset{SphericalCoor=true,viewpoint=50 -20 30,Decran=100,linewidth=2pt} 123 \begin{pspicture}(-3,-3)(3,3) 124 \psframe*(-3,-3)(3,3) 125 \codejps{ 126 /geode42{4 2 newdualgeode} def 127 .7 setfillopacity 128 orange 129 /geodetransparente{ 130 geode42 131 dup videsolid 132 dup (orange) inputcolors 133 dup [.1 .9] solidputhuecolors} def 134 geodetransparente 135 drawsolid**} 136 \end{pspicture} 137 \end{LTXexample} 138 139 \subsection{Conseils pour la construction `rapide' des géodes} 140 141 Le temps de calcul des géodes et de leurs duales dépend du nombre de 142 divisions sur une arête (le deuxième paramètre $n$) et il devient 143 rapidement très grand, ce qui est vraiment une gêne lorsqu'on est 144 obligé d'attendre, plus ou moins patiemment, le résultat de la 145 transformation \Cadre{dvips->ps2pdf}. 146 147 Comme pour tous les autres solides, il est possible de sauvegarder la 148 structure calculée dans des fichiers externes, ce qui permettra un 149 gain de temps appréciable si on doit faire des essais de couleurs ou 150 de point de vue. 151 152 Il faut opérer en deux étapes : 153 154 \subsubsection {Sauvegarde en fichier \texttt{.dat} des paramètres de la géode} 155 156 \begin{verbatim} 157 \documentclass{article} 158 \usepackage{pst-solides3d} 159 \begin{document} 160 \codejps{ 161 4 4 newdualgeode 162 dup {[.5 .6]} exec solidputhuecolors 163 (geodedual44) writesolidfile 164 } 165 \end{document} 166 \end{verbatim} 167 \Cadre{LaTeX->dvips->GSview (Windows)ou gv (Linux)} 168 169 Cette dernière opération va créer 4 fichiers : 170 \begin{itemize} 171 \item \texttt{geodedual44.dat} -> les couleurs des faces ; 172 \item \texttt{geodedual44.dat} -> la liste des faces ; 173 \item \texttt{geodedual44.dat} -> la liste des sommets ; 174 \item \texttt{geodedual44-io.dat} -> le nombre de faces et de sommets. 175 \end{itemize} 176 177 \encadre{Par défaut, sous Windows et Linux, la protection des fichiers 178 du disque dur est activée et ne permet donc pas l'écriture sur le 179 disque. Pour désactiver cette protection, tout au moins 180 temporairement, voici les deux procédures correspondantes : 181 182 \begin{description} 183 184 \item[Linux : ] le conseil de Jean-Michel Sarlat : le plus 185 simple est donc d'utiliser ghostscript directement, en console. Comme 186 il n'y a rien à attendre comme image : 187 188 \$> gs -dNOSAFER lissatest.ps quit.ps 189 \item[Windows : ] dans le menu \textsf{Options}, l'option \textsf{Protection des fichiers} ne doit pas être cochée. 190 \end{description}} 191 192 \subsubsection {Lecture des données et dessin de la géode} 193 194 %% \begin{LTXexample}[pos=t] 195 %% \psset{unit=2} 196 %% \psset{lightsrc=10 0 10,SphericalCoor=true,viewpoint=50 -20 30,Decran=100} 197 %% \begin{pspicture}(-2,-2)(2,2) 198 %% \psframe(-2,-2)(2,2) 199 %% \psSolid[object=datfile,file=geodedual44] 200 %% \end{pspicture} 201 %% \end{LTXexample} 202 203 L'avantage de cette méthode vous paraîtra plus évident en faisant la 204 comparaison suivante : compilation de deux fichiers qui produisant le 205 même résultat avec les deux méthodes en concurrence. 206 207 Le fichier \texttt{geode42\_direct.tex} fait le calcul du solide et 208 son affichage. Le fichier \texttt{geode42\_precalcul.tex} utilise les 209 fichiers \texttt{.dat} de données pré-calculées par 210 \texttt{calc\_geode42.tex}. 211 212 \subsection{D'autres exemples} 213 214 \begin{LTXexample}[pos=t] 215 \psset{SphericalCoor=true,viewpoint=50 -20 30,Decran=100} 216 \begin{pspicture}(-3,-3)(3,3) 217 \psframe(-3,-3)(3,3) 218 \psSolid[object=datfile,file=geode51,deactivatecolor] 219 \psframe*(-2,-2.8)(2,-2.2) 220 \rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=1}}} 221 \end{pspicture} 222 \hfill 223 \begin{pspicture}(-3,-3)(3,3) 224 \psframe(-3,-3)(3,3) 225 \psSolid[object=datfile,file=geodedual51,deactivatecolor] 226 \psframe*(-2,-2.8)(2,-2.2) 227 \rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=1}}} 228 \end{pspicture} 229 \end{LTXexample} 230 231 \begin{LTXexample}[pos=t] 232 \psset{SphericalCoor=true,viewpoint=50 -20 30,Decran=100} 233 \begin{pspicture}(-3,-3)(3,3) 234 \psframe(-3,-3)(3,3) 235 \psSolid[object=datfile,file=geode52,deactivatecolor] 236 \psframe*(-2,-2.8)(2,-2.2) 237 \rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=2}}} 238 \end{pspicture} 239 \hfill 240 \begin{pspicture}(-3,-3)(3,3) 241 \psframe(-3,-3)(3,3) 242 \psSolid[object=datfile,file=geodedual52,deactivatecolor] 243 \psframe*(-2,-2.8)(2,-2.2) 244 \rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=2}}} 245 \end{pspicture} 246 \end{LTXexample} 247 248 \begin{LTXexample}[pos=t] 249 \psset{SphericalCoor=true,viewpoint=50 -20 30,Decran=100} 250 \begin{pspicture}(-3,-3)(3,3) 251 \psframe(-3,-3)(3,3) 252 \psSolid[object=datfile,file=geode53,deactivatecolor] 253 \psframe*(-2,-2.8)(2,-2.2) 254 \rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=3}}} 255 \end{pspicture} 256 \hfill 257 \begin{pspicture}(-3,-3)(3,3) 258 \psframe(-3,-3)(3,3) 259 \psSolid[object=datfile,file=geodedual53,deactivatecolor] 260 \psframe*(-2,-2.8)(2,-2.2) 261 \rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=3}}} 262 \end{pspicture} 263 \end{LTXexample} trunk/doc/par-lignedeniveau.tex
r30 r45 2 2 3 3 Pour chaque objet de type \textsl {solid}, il est possible de tracer 4 une ligne de niveau, autrement dit l'intersection du solide considéré 5 avec un plan d'équation $z=z_0$. Quatres paramètres pour cette option~: 4 l'intersection du solide considéré avec un ou plusieurs plans. 5 6 L'argument numérique \Cadre{[intersectiontype=$k$]} (valeur $-1$ par 7 défaut) détermine s'il y a ou non demande de tracé 8 d'intersection. Positionné à $0$, il y a tracé des intersections. 9 10 Restent $3$ paramètres à régler~: 11 6 12 \begin{itemize} 7 13 8 \item \ verb+tracelignedeniveau+~: booléen. Positionné à \verb+true+,9 il y aura tracé de la ligne de niveau 14 \item \Cadre{[intersectionplan=\{$eq_1$ ... $eq_n$\}]} 15 définit la liste des équations $e_i$ des plans de coupe. 10 16 11 \item \verb+hauteurlignedeniveau+~: la valeur $z_0$ définissant le 12 plan d'intersection 17 \item \Cadre{[intersectionlinewidth=$w_1$ ... $w_n$]} 18 définit la liste des épaisseurs en picas $w_i$ pour chacune des des 19 coupes. 13 20 14 \item \verb+linewidthlignedeniveau+~: l'épaisseur en picas du tracé de 15 la ligne de niveau 16 17 \item \verb+couleurlignedeniveau+~: la couleur du tracé. 21 \item \Cadre{[intersectioncolor=$str_1$ ... $str_n$]} 22 définit la liste des couleurs des différents traits de coupe. 18 23 19 24 \end{itemize} … … 28 33 \psframe(-5,-4)(5,5) 29 34 \psSolid[object=cube, 30 tracelignedeniveau=true,31 hauteurlignedeniveau=1,32 linewidthlignedeniveau=3,33 couleurlignedeniveau=blue,35 intersectiontype=0, 36 intersectionplan={[1 0 .5 2] [1 0 .5 -1]}, 37 intersectionlinewidth=1 2, 38 intersectioncolor=(bleu) (rouge), 34 39 RotX=20, 35 40 RotY=90, 36 41 RotZ=30, 37 42 a=6, 38 ngrid=4, 39 base=-4 4 -4 4, 40 ](0,0,0) 43 action=draw*, 44 ] 41 45 \end{pspicture*} 42 46 \egroup … … 47 51 \begin{verbatim} 48 52 \psSolid[object=cube, 49 tracelignedeniveau=true, 50 hauteurlignedeniveau=1, 51 linewidthlignedeniveau=3, 52 couleurlignedeniveau=blue, 53 RotX=20, 54 RotY=90, 55 RotZ=30, 53 intersectiontype=0, 54 intersectionplan={[1 0 .5 2] [1 0 .5 -1]}, 55 intersectionlinewidth=1 2, 56 intersectioncolor=(bleu) (rouge), 57 RotX=20,RotY=90,RotZ=30, 56 58 a=6, 57 ngrid=4,58 ] (0,0,0)59 action=draw*, 60 ] 59 61 \end{verbatim} 60 62 61 63 \end {multicols} 62 64 63 \llap {\dbend} La syntaxe présentée dans ce paragraphe n'est que64 provisoire. Cette option a été introduite quelques jours avant la65 publication de la version $3.0$, et la syntaxe est vouée à changer dès66 la prochaine version de \verb+pst-solides3d+, afin de permettre le67 tracé de plusieurs lignes de niveau sur un même solide.68 65 trunk/doc/par-new.tex
r2 r45 207 207 \end{verbatim} 208 208 209 \subsection {Exemple 3 : Import de fichiers externes} 210 211 Il est possible de faire lire les données dans des fichiers 212 externes. Dans l'exemple ci-dessous, les fichiers 213 \verb+sommets_nefer.dat+ et \verb+faces_nefer.dat+ ont été plcés 214 dans le répertoire de compilation. 209 \subsection {Exemple 3~: Import de fichiers externes} 210 211 \`A partir d'un fichier de description de solide dans un format 212 particulier (notamment autre que obj ou off), on peut fabriquer 213 soit-même un fichier .dat contenant les coordonnées des sommets, et 214 un autre fichier .dat contenant les tableaux des indices des sommets 215 de chaque facette. Ces fichiers peuvent alors être utilisés en entrée 216 pour les paramètres \verb+sommets+ et \verb+faces+ en utilisant 217 l'instruction postscript \verb+run+. 218 219 Dans l'exemple ci-dessous, les fichiers \verb+sommets_nefer.dat+ 220 et \verb+faces_nefer.dat+ ont été placés dans le répertoire de 221 compilation. 215 222 216 223 \bgroup trunk/doc/par-section.tex
r30 r45 1 1 \section {Sectionner un solide par un plan} 2 trunk/doc/par-solidespredefinis.tex
r2 r45 836 836 \axesIIID(0,0,0)(4,4,7) 837 837 \defFunction[algebraic]{helice}(t){3*cos(4*t)}{3*sin(4*t)}{t} 838 \psSolid[object=courbe, 838 \psSolid[object=courbe,r=0, 839 839 range=0 6, 840 840 linecolor=blue,linewidth=0.1, … … 848 848 \defFunction[algebraic]% 849 849 {helice}(t){3*cos(4*t)}{3*sin(4*t)}{t} 850 \psSolid[object=courbe, 850 \psSolid[object=courbe,r=0, 851 851 range=0 6, 852 852 linecolor=blue,linewidth=0.1, trunk/doc/par-surfaces.tex
r2 r45 188 188 x y mul 4 min -4 max} 189 189 \defFunction{F}(t){t}{4 t div 4 min}{4} 190 \psSolid[object=courbe,range=1 4, 190 \psSolid[object=courbe,range=1 4,r=0, 191 191 linecolor=red,linewidth=2\pslinewidth, 192 192 function=F] 193 193 \defFunction{G}(t){t}{4 t div -4 max}{4} 194 \psSolid[object=courbe,range=-1 -4, 194 \psSolid[object=courbe,range=-1 -4,r=0, 195 195 linecolor=red,linewidth=2\pslinewidth, 196 196 function=G] 197 197 \defFunction{H}(t){t neg}{4 t div -4 max}{-4} 198 \psSolid[object=courbe,range=-1 -4, 198 \psSolid[object=courbe,range=-1 -4,r=0, 199 199 linecolor=red,linewidth=2\pslinewidth, 200 200 function=H] trunk/doc/par-tronque.tex
r30 r45 1 1 \section {Tronquer les sommets d'un solide} 2 3 L'option \verb+trunc+ permet de tronquer les sommets soit 4 globalement, soit individuellement. Cette option utilise l'argument 5 \verb+trunccoeff+ (valeur $0,25$ par défaut) qui indique le rapport 6 $k$ utiliser pour la troncature ($0<k\leq 0,5$). 7 % 8 \begin{itemize} 9 \item \texttt{[trunc=all]} tronque tous les sommets ; 10 \item \texttt{[trunc=0 1 2 3]} tronque les sommets \texttt{[0,1,2 et 3]} ; 11 \end{itemize} 12 % 13 \begin{multicols}{2} 14 \psset{unit=0.5} 15 \setlength{\columnseprule}{1pt} 16 \centerline{ 17 \begin{pspicture}(-5,-5)(5,5) 18 \psframe(-5,-5)(5,5) 19 \psset{Decran=20} 20 \psSolid[ 21 action=draw, 22 object=cube, 23 RotZ=30, 24 trunccoeff=.2,trunc=all, 25 ]% 26 \end{pspicture}} 27 \begin{verbatim} 28 \psSolid[object=cube, 29 action=draw,RotZ=30, 30 trunccoeff=.2,trunc=all, 31 ]% 32 \end{verbatim} 33 \columnbreak 34 \centerline{ 35 \begin{pspicture}(-5,-5)(5,5) 36 \psframe(-5,-5)(5,5) 37 \psset{Decran=20} 38 \psSolid[action=draw, 39 object=cube, 40 RotZ=30, 41 trunccoeff=.2, 42 trunc=0 1 2 3, 43 ]% 44 \end{pspicture}} 45 \begin{verbatim} 46 \psSolid[object=cube, 47 RotZ=30,action=draw, 48 trunccoeff=.2, 49 trunc=0 1 2 3, 50 ]% 51 \end{verbatim} 52 \end{multicols} 53 %\newpage trunk/doc/pst-solides3d-doc.tex
r30 r45 96 96 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 97 97 \newcommand\Cadre[1]{\psframebox[fillstyle=solid,fillcolor=yellow,linecolor={[cmyk]{0,0,1,0.1}}]{\texttt{#1}}} 98 \newcommand\encadre[1]{\begin{center} 99 \psframebox[fillstyle=solid,fillcolor=green!33,linecolor=green,linewidth=0.5mm]{ 100 \begin{minipage}{0.95\textwidth} 101 {#1} 102 \end{minipage}} 103 \end{center}} 98 104 99 105 \newcommand\toptableau{ … … 176 182 \newpage 177 183 184 %\input \datapath par-datfile 185 %\input \datapath par-geode 186 %% \input \datapath par-tronque 187 %% \input \datapath par-affinage 188 %\input \datapath par-courbeR3 189 %\input \datapath par-vecteur 178 190 %\input \datapath par-plan 191 %\input \datapath par-surfaces 192 %\input \datapath par-lignedeniveau 193 %\input \datapath par-point 179 194 %\end {document} 180 195 … … 189 204 \input \datapath par-solidespredefinis 190 205 \input \datapath par-positionnersolide 191 \input \datapath par-grille192 \input \datapath par-plan193 \input \datapath par-vecteur194 \input \datapath par-geode195 206 196 207 \chapter{Les options de \textbackslash{}psSolid} … … 201 212 \input \datapath par-enleverfacettes 202 213 \input \datapath par-pointagesommets 203 \input \datapath par-tronque204 \input \datapath par-affinage205 \input \datapath par-chanfrein206 214 207 215 \input \datapath par-couleurs … … 211 219 \input \datapath par-modes 212 220 \input \datapath par-eclairageponctuel 221 \input \datapath par-tronque 222 \input \datapath par-affinage 223 \input \datapath par-chanfrein 213 224 \input \datapath par-lignedeniveau 214 225 … … 216 227 217 228 \input \datapath par-datfile 218 \input \datapath par-offfile 219 \input \datapath par-objfile 229 %\input \datapath par-offfile 230 %\input \datapath par-objfile 231 232 \chapter{Quelques objets spécifiques} 233 \input \datapath par-grille 234 \input \datapath par-plan 235 \input \datapath par-vecteur 236 \input \datapath par-point 237 \input \datapath par-geode 220 238 221 239 \chapter{Fabriquer de nouveaux solides} … … 225 243 226 244 \input \datapath par-courbeR3 245 \input \datapath par-tube 227 246 \input \datapath par-prisme 228 247 \input \datapath par-new
