Changeset 80
- Timestamp:
- 07/07/08 14:51:33 (6 months ago)
- Files:
-
- trunk/doc/ex-borromee.tex (deleted)
- trunk/doc/ex-chaine_olympique.tex (deleted)
- trunk/doc/ex-champignons.tex (deleted)
- trunk/doc/ex-coupe2.tex (deleted)
- trunk/doc/ex-square-ring2.tex (deleted)
- trunk/doc/fusee62-couleurs.dat (added)
- trunk/doc/fusee62-faces.dat (added)
- trunk/doc/fusee62-io.dat (added)
- trunk/doc/fusee62-sommets.dat (added)
- trunk/doc/par-affinage.tex (modified) (1 diff)
- trunk/doc/par-anneaux.tex (modified) (1 diff)
- trunk/doc/par-chanfrein.tex (modified) (1 diff)
- trunk/doc/par-changements.tex (modified) (1 diff)
- trunk/doc/par-constitution.tex (modified) (2 diffs)
- trunk/doc/par-definirfonction.tex (modified) (2 diffs)
- trunk/doc/par-definitionmaillage.tex (modified) (1 diff)
- trunk/doc/par-eclairageponctuel.tex (modified) (5 diffs)
- trunk/doc/par-grille.tex (modified) (2 diffs)
- trunk/doc/par-lignedeniveau.tex (modified) (1 diff)
- trunk/doc/par-modes.tex (modified) (1 diff)
- trunk/doc/par-new.tex (modified) (2 diffs)
- trunk/doc/par-nommersolide.tex (modified) (3 diffs)
- trunk/doc/par-plan.tex (modified) (3 diffs)
- trunk/doc/par-projectionangledroit.tex (added)
- trunk/doc/par-projectioncourbe.tex (modified) (1 diff)
- trunk/doc/par-projectiondroite.tex (modified) (1 diff)
- trunk/doc/par-section.tex (modified) (10 diffs)
- trunk/doc/par-solidespredefinis.tex (modified) (1 diff)
- trunk/doc/par-transform.tex (modified) (7 diffs)
- trunk/doc/par-transformpointconnu.tex (modified) (2 diffs)
- trunk/doc/par-vecteur.tex (modified) (1 diff)
- trunk/doc/pst-solides3d-doc.pdf (modified) (previous)
- trunk/doc/pst-solides3d-doc.ps (added)
- trunk/doc/pst-solides3d-doc.tex (modified) (7 diffs)
- trunk/doc/pst-solides3d-doc.toc (added)
- trunk/doc/tintin.tex (added)
- trunk/pst-solides3d.sty (modified) (1 diff)
- trunk/pst-solides3d.tex (modified) (5 diffs)
- trunk/solides.pro (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/doc/par-affinage.tex
r66 r80 39 39 couleur de remplacement. 40 40 41 \newpage41 %\newpage 42 42 \begin{multicols}{2} 43 43 \psset{unit=0.5} trunk/doc/par-anneaux.tex
r66 r80 107 107 \psSolid[object=anneau,fillcolor=yellow,h=3,R=8,r=6,RotX=90,RotZ=10](0,0,0) 108 108 \end{verbatim} 109 110 \newpage111 112 109 113 110 \subsection {Un simple anneau à section triangulaire} trunk/doc/par-chanfrein.tex
r45 r80 39 39 40 40 L'option \verb+chanfrein+ permet de chanfreiner un solide. Cette 41 option utilise l'argument \verb+chanfreincoeff+ (valeur $0, 2$ par41 option utilise l'argument \verb+chanfreincoeff+ (valeur $0,8$ par 42 42 défaut) qui indique le rapport $k$ à utiliser ($0<k<1$). Ce rapport 43 43 est celui d'une homothétie de cetre le centre de la face considérée. trunk/doc/par-changements.tex
r45 r80 4 4 5 5 \begin {itemize} 6 7 \item La macro de projection est complètement remise à plat, et on 8 perd la compatibilité. Il faut maintenant utiliser un objet de 9 \textsl {type plan\/} pour définir une projection. 6 10 7 11 \item L'objet \texttt{courbe} utilise maintenant l'argument $r$. Pour trunk/doc/par-constitution.tex
r2 r80 1 \section {Constitution du package }1 \section {Constitution du package -- Distribution} 2 2 3 3 \begin{itemize} … … 5 5 \texttt{solides.pro}. 6 6 \item Documentation et exemples : 7 \begin{enumerate} 8 \item \texttt{documentation-solides.tex(pdf)} ; 9 \item \texttt{doc-grille-parallelepiped.tex(pdf)} ; 10 \item \texttt{doc-exemples-solides3d.tex(pdf)}. 11 \item \texttt{doc-solidespro.pdf}. 12 \end{enumerate} 7 \texttt{pst-solides3d-doc.tex(pdf)}. 13 8 \end{itemize} 9 10 11 Ce package est disponible à l'url 12 \url{http://syracuse.eu.org/syracuse/pstricks/pst-solides3d/} 13 14 De nombreux exemples sont publiés ici~: 15 \url{http://syracuse.eu.org/lab/bpst/pst-solides3d} 16 17 Et enfin, la version de développement est disponible sur le svn de 18 mélusine~: 19 \url{http://syracuse-dev.org/pst-solides3d} trunk/doc/par-definirfonction.tex
r2 r80 28 28 \verb!<x(var)>! \verb!<y(var)>! \verb!<z(var)>! & On y met des 29 29 fonctions dépendant des variables définies pour les directions 30 euclidien s $x,\,y,\,z$. Si une de ces trois directions n'est pas31 voulue, insérez un 0 entre les parenthèses -- \c{c}avous donne la32 possibilité de définir aussi des fonctions en plane.30 euclidienness $x,\,y,\,z$. Si une de ces trois directions n'est pas 31 voulue, insérez un 0 entre les parenthèses -- ce qui vous donne la 32 possibilité de définir aussi des projetés plans de courbes de fonctions. 33 33 \end{tabular} 34 34 \end{table} … … 39 39 Voil\`{a} quelques exemples: 40 40 \begin{itemize} 41 \item \verb!\defFunction{ cercle}(t){t cos 3 mul}{0}{t sin 3 mul}!41 \item \verb!\defFunction{moncercle}(t){t cos 3 mul}{0}{t sin 3 mul}! 42 42 43 donne un cercle d ans le plane $x,\,z$ avec le rayon 3 en notation RPN.43 donne un cercle de rayon 3 dans le plan $xOz$ (notation RPN). 44 44 \item \verb!\defFunction[algebraic]{helice}(t){cos(t)}{sin(t)}{t}! 45 45 46 donne un hélice en notation algèbre. 46 donne une hélice en notation algèbrique. 47 48 \item \verb!\defFunction[algebraic]{F}(t){t}{}{}! 49 donne une fonction de \textbf{R} dans \textbf{R} 50 51 \item \verb!\defFunction[algebraic]{F}(t){t}{}{}! 52 donne une fonction de \textbf{R} dans \textbf{R$^{\textbf 2}$} 53 54 \item \verb!\defFunction[algebraic]{F}(t){t}{t}{t}! 55 donne une fonction de \textbf{R} dans \textbf{R$^{\textbf 3}$} 56 47 57 \end{itemize} 48 58 49 \llap {\dbend} 50 Cette macro est encore expérimentale. Il nous reste en particulier à 51 gérer certains problèmes de conflits de noms. Merci d'utiliser pour 52 vos noms de fonctions des noms analogues à ceux utilisés dans la 53 documentation. 59 \llap {\dbend } Il nous reste encore du travail à faire sur cette 60 macro, et elle ne permet pour le moment pas de choisir des noms 61 de variables quelconques, car ils risquent d'entrer en conflit avec 62 des noms déjà existant. Merci d'utiliser des noms analogues à ceux 63 utilisés dans la documentation. Une bonne stratégie consiste à 64 utiliser systématiquement un ou plusieurs caractères numériques à la 65 fin de vos noms de variables. trunk/doc/par-definitionmaillage.tex
r52 r80 117 117 \end{multicols} 118 118 119 \newpage120 119 \subsection {La sphère} 121 120 trunk/doc/par-eclairageponctuel.tex
r66 r80 4 4 lumineuse : 5 5 \begin{itemize} 6 \item \texttt{[lightsrc=20 30 50]} en coordonnées cartésiennes. 6 \item \texttt{[lightsrc=20 30 50]} en coordonnées cartésiennes, ou 7 \texttt{[lightsrc=viewpoint]} pour faire coïncider la source lumineuse 8 avec l'observateur. 7 9 \item \texttt{[lightintensity=2]} (valeur par défaut). 8 10 \end{itemize} … … 14 16 \begin{pspicture}(-6,-5)(4,5) 15 17 \psframe(-6,-5)(4,5) 16 \psset{Decran=1e3,viewpoint= 0.5e3 0 1e3,lightsrc=1e3 0 1e3,mode=5}18 \psset{Decran=1e3,viewpoint=500 0 1000,lightsrc=viewpoint,mode=4} 17 19 \psSolid[object=cube,RotZ=30](0,2,0) 18 20 \psSolid[object=cylindrecreux,RotX=30,RotZ=-30,fillcolor=cyan,incolor=red](4,-3,0) … … 20 22 \begin{verbatim} 21 23 \psset{Decran=1e3, 22 viewpoint= 1e3 0 1e3,23 lightsrc= 1e3 0 1e3,24 viewpoint=500 0 1000, 25 lightsrc=viewpoint, 24 26 mode=5} 25 27 \psSolid[object=cube,RotZ=30](0,2,0) … … 32 34 \begin{pspicture}(-6,-5)(4,5) 33 35 \psframe(-6,-5)(4,5) 34 \psset{Decran=30,viewpoint=30 10 20,lightsrc= 30 10 20,mode=3}36 \psset{Decran=30,viewpoint=30 10 20,lightsrc=viewpoint,mode=3} 35 37 \psSolid[object=cube,lightintensity=3,RotX=90,fillcolor=yellow](0,3,0) 36 38 \psSolid[object=cube,lightintensity=1,RotX=90,fillcolor=yellow](3,-3,0) … … 39 41 \psset{Decran=30, 40 42 viewpoint=30 30 30, 41 lightsrc= 0 1e3 1e3,43 lightsrc=viewpoint, 42 44 mode=3} 43 45 \psSolid[object=cube, trunk/doc/par-grille.tex
r66 r80 1 1 \section {La grille} 2 2 3 Le paramètre \verb+[base=+$x{min}$ ${x{max}}$ ${y{min}}$ 4 ${y{max}}$\verb+]+ permet de spécifier la taille de la grille. 3 L'objet \Cadre{grille} permet d'obtenir un solide plan. 4 Le paramètre \Cadre{base=$x{min}$ ${x{max}}$ ${y{min}}$ 5 ${y{max}}$]} permet de spécifier la taille de la grille. 5 6 6 7 \begin{multicols}{2} … … 23 24 \end{multicols} 24 25 25 Le paramètre \ verb+[ngrid=+$n_1$ $n_2$\verb+]+permet de spécifier le26 Le paramètre \Cadre{[ngrid=$n_1$ $n_2$]} permet de spécifier le 26 27 maillage de la grille. Si $n_2$ est absent, on considère que $n_2 = 27 28 n_1$. trunk/doc/par-lignedeniveau.tex
r66 r80 13 13 14 14 \item \Cadre{[intersectionplan=\{$eq_1$ ... $eq_n$\}]} 15 définit la liste des équations $e_i$ des plans de coupe. 15 définit la liste des équations $e_i$ des plans de coupe. Les $e_i$ 16 peuvent être également des objets de type plan. 16 17 17 18 \item \Cadre{[intersectionlinewidth=$w_1$ ... $w_n$]} trunk/doc/par-modes.tex
r2 r80 50 50 \end{pspicture} 51 51 \end{center} 52 \newpage52 %\newpage trunk/doc/par-new.tex
r66 r80 6 6 de toutes les faces du solide, une face de solide étant caractérisée 7 7 par la liste des indices des sommets la constituant, ceux-ci étant 8 \textbf {rangés dans le sens trigonométrique lorsque l'on r agarde la8 \textbf {rangés dans le sens trigonométrique lorsque l'on regarde la 9 9 face du coté extérieur}. 10 10 11 11 \subsection {Exemple 1 : une maison} 12 13 %% exemple 1 14 12 \vskip -10mm 15 13 \begin{multicols}{2} 16 17 14 \bgroup 18 15 \psset{unit=0.5} 19 16 \psset{lightsrc=10 -20 50,SphericalCoor,viewpoint=50 -20 30,Decran=50} 20 \begin{pspicture*}(-7,-4)(7, 8)21 \psframe(-7,-4)(7, 8)17 \begin{pspicture*}(-7,-4)(7,7) 18 \psframe(-7,-4)(7,7) 22 19 \psSolid[object=new, 23 20 sommets= … … 39 36 \end{pspicture*} 40 37 \egroup 41 42 38 \columnbreak 43 44 39 \begin{verbatim} 45 40 \psSolid[object=new, trunk/doc/par-nommersolide.tex
r66 r80 43 43 ngrid=3, 44 44 action=none, 45 name=A 1,45 name=A, 46 46 ](0,0,0) 47 47 \psSolid[object=load, 48 48 deactivatecolor, 49 load=A 1]49 load=A] 50 50 \composeSolid 51 51 \end{pspicture*} … … 61 61 ngrid=3, 62 62 action=none, 63 name=A 1,63 name=A, 64 64 ](0,0,0) 65 65 \psSolid[object=load, 66 66 deactivatecolor, 67 load=A 1]67 load=A] 68 68 \composeSolid 69 69 \end{verbatim} … … 71 71 72 72 73 \llap {\dbend } Il nous reste encore du travail à faire sur ces 74 macros, et elles ne permettent pour le moment pas de choisir des noms 75 de variables quelconques, car ils risquent d'entrer en conflit avec 76 des noms déjà existant. Merci d'utiliser des noms analogues à ceux 77 utilisés dans la documentation. Une bonne stratégie consiste à 78 utiliser systématiquement un ou plusieurs caractères numériques à la 79 fin de vos noms de variables. 73 \llap {\dbend } 74 Avec l'option \verb+solidmemory+, les noms de variables sont 75 relativement bien encapsulés, et il n'y a pas de conflit avec les 76 variables de dvips par exemple. Il reste par contre le risque de 77 surcharge des noms utilisés par \verb+solides.pro+. On peut utiliser 78 tous les noms de variables à un seul carctère alphabétique, mais il 79 faut éviter d'utiliser des noms comme 80 \verb+vecteur+, 81 \verb+distance+, 82 \verb+droite+, etc\dots qui sont déjà définis par le package. trunk/doc/par-plan.tex
r78 r80 1 1 \section {L'objet \texttt{plan}} 2 2 3 L'objet \verb+plan+ est en fait une portion de plan affine 4 orienté. Pour une définition complète d'un tel solide, il nous faut 5 une origine $I$, une base vectorielle $(\vec u, \vec v)$ de ce 3 Le statut de l'objet \verb+plan+ est tout à fait particulier dans 4 \verb+pst-solides3d+. En effet, tous les objets vus jusqu'à présents 5 ont une structure commune~: ils sont de type \textsl{solid}. Autrement 6 dit ils sont entièrement définis par une liste de sommets, de faces et 7 de couleurs. 8 Or pour de nombreuses applications, il est nécessaire d'avoir des 9 renseignements complémentaires pour un plan~: une origine, une 10 orientation, une base de référence, etc... 11 12 Pour pouvoir répondre à ces exigences, il a été créé une autre 13 structure de données, dite de type \textsl {plan}, qui permet de 14 stocker toutes les informations nécessaires. Idéalement, toutes les 15 manipulations de plan vont transiter par un tel objet. Ce n'est qu'au 16 moment de la représentation que l'objet de type \textsl {plan\/} sera 17 converti en un objet de type \textsl {solid\/} représentable par la 18 macro \verb+\psSolid+. 19 20 \subsection {Définir un objet de type plan orienté} 21 22 Pour créer un tel objet, on utilise \Cadre{[object=plantype]} qui 23 nécessite au moins $3$ arguments~: 24 25 \begin{itemize} 26 27 \item \Cadre{[definition=...]} qui permet de spécifier la méthode 28 choisie pour définir le plan 29 30 \item \Cadre{[args=...]} qui permet de spécifier les arguments 31 nécessaires à la méthode choisie précédemment 32 33 \item \Cadre{[name=...]} qui permet de donner un nom à l'objet créé. 34 35 \end{itemize} 36 37 Un objet de type \textsl{plan\/} permet donc de décrire une portion de 38 plan affine orienté. Pour une définition complète d'un tel objet, il 39 nous faut une origine $I$, une base vectorielle $(\vec u, \vec v)$ de ce 6 40 plan, une étendue sur l'axe $(I, \vec u)$ et une étendue sur l'axe 7 41 $(I, \vec v)$. 8 9 De plus, comme pour tout solide, on pourra spécifier le maillage 10 souhaité, autrement dit le nombre de facettes utilisées pour 11 représenter cette portion de plan affine. 12 13 Enfin, cet objet dispose d'options spécifiques permettant le tracé des 14 axes, leurs graduations ou encore l'impression d'un quadrillage. 15 16 Plusieurs méthodes sont autorisées pour la définition d'un objet de 17 type \verb+plan+. Le paramètre \Cadre{[definition=...]} permet de 18 spécifier la méthode choisie, et le paramètre \Cadre{[args=...]} 19 permet de préciser les arguments. 42 De plus, on pourra spécifier le maillage souhaité, autrement dit le 43 nombre de facettes utilisées pour représenter cette portion de plan 44 affine lors de la transformation en objet de type \textsl{solid}. 45 46 Ce type d'objet peut être utilisé pour définir des sections 47 planes, et il est obligatoire pour définir un plan de projection. Par 48 contre, son utilisation implique la possibilité de sauvegarde des 49 données et donc l'utilisation du couple 50 \begin{gbar} 51 \begin{verbatim} 52 \psset{solidmemory} 53 ... 54 \composeSolid 55 \end{verbatim} 56 \end{gbar} 57 (voir chapitre \textsl{Utilisation avancée}.) 58 \bigskip 59 60 Nous verrons plus loin les différentes méthodes disponibles pour 61 définir un plan. Donnons ici seulement un exemple de définition d'un 62 plan par son équation~: 63 \begin{verbatim} 64 \psSolid[object=plantype, 65 definition=equation, 66 args={[0 0 1 0]}, 67 base=-2 2 -3 3, 68 name=monplan, 69 ] 70 \end{verbatim} 71 La séquence précédente vient de définir la variable $monplan$ comme 72 désignant un objet de type \textsl{plan\/} représentant une portion 73 d'un plan affine orienté d'équation $z=0$. 74 75 \subsection {Représentation d'un objet de type plan orienté} 76 77 Pour la représentation, il faut transformer notre objet de type 78 \textsl{plan\/} en objet de type \textsl{solid}. Lorsque l'activation 79 \verb+solidmemory+ est activée, on utilise \Cadre{[object=plan]} avec 80 \Cadre{[args=$name$]} où $name$ désigne la variable de type \textsl 81 {plan}. 82 83 Par exemple la séquence 84 \begin{verbatim} 85 \psSolid[object=plan,args=monplan] 86 \end{verbatim} 87 permet de représenter le plan défini au paragraphe précédent. 88 89 \subsection {Utilisation basique (sans \text{solidmemory})} 90 91 En première approche, on peut éviter de passer par l'étape 92 <<~construction d'un objet de type plan orienté~>>. On utilise alors 93 \Cadre{[object=plan]} avec au moins les $2$ arguments~: 94 95 \begin{itemize} 96 97 \item \Cadre{[definition=...]} qui permet de spécifier la méthode 98 choisie pour définir le plan 99 100 \item \Cadre{[args=...]} qui permet de spécifier les arguments 101 nécessaires à la méthode choisie précédemment 102 103 \end{itemize} 104 Ces arguments sont communs aux objets \verb+plan+ et \verb+plantype+. 105 106 \llap {\dbend } 107 Dans les paragraphes qui suivent, on ne passera pas par l'objet 108 \verb+plantype+ dans le souci de rester simple en première lecture. Il 109 faut cependant bien garder en mémoire que la méthode <<~naturelle~>>, 110 ou en tout cas conseillée, est de passer par un tel objet. 111 112 %% 113 %% Plusieurs méthodes sont autorisées pour la définition d'un objet de 114 %% type \verb+plan+. Le paramètre \Cadre{[definition=...]} permet de 115 %% spécifier la méthode choisie, et le paramètre \Cadre{[args=...]} 116 %% permet de préciser les arguments. 117 %% 118 %% \subsection {Définir un plan à partir d'un objet de type plan} 119 %% 120 %% On utilise \Cadre{[definition=plantype]} et 121 %% \Cadre{[args=\textsl{name}]} où \textsl {name} désigne le nom de 122 %% l'objet de type \textsl{plan}. 123 %% 124 %% \begin{multicols}{2} 125 %% \psset{unit=0.65} 126 %% \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10} 127 %% \begin{pspicture*}(-5,-4)(5,4) 128 %% \psframe(-5,-4)(5,4) 129 %% \psset{solidmemory} 130 %% \psSolid[object=plantype, 131 %% definition=equation, 132 %% args={[0 0 1 0]}, 133 %% base=-2 2 -3 3, 134 %% name=monplan, 135 %% ] 136 %% \psSolid[object=plan, 137 %% definition=plantype, 138 %% fillcolor=Aquamarine, 139 %% planmarks, 140 %% args=monplan 141 %% ] 142 %% \axesIIID(0,0,0)(2,3,4) 143 %% \end{pspicture*} 144 %% 145 %% \columnbreak 146 %% 147 %% \begin{verbatim} 148 %% \psSolid[object=plan, 149 %% definition=plantype, 150 %% args=monplan 151 %% fillcolor=Aquamarine, 152 %% planmarks, 153 %% ] 154 %% \end{verbatim} 155 %% \end{multicols} 20 156 21 157 \subsection {Options spécifiques} 22 158 23 L'objet \verb+plan+ possède plusieurs options spécifiques ~:159 L'objet \verb+plan+ possède plusieurs options spécifiques d'affichage~: 24 160 \Cadre{[planmarks]} qui projette l'impression des axes et graduations, 25 161 \Cadre{[plangrid]} qui projette l'impression d'un quadrillage, … … 413 549 \end{multicols} 414 550 415 \subsection {Définir un plan à partir d'un objet de type plan}416 417 On utilise \Cadre{[definition=plantype]} et418 \Cadre{[args=\textsl{name}]} où \textsl {name} désigne le nom de419 l'objet de type \textsl{plan}.420 421 \begin{multicols}{2}422 \psset{unit=0.65}423 \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10}424 \begin{pspicture*}(-5,-4)(5,4)425 \psframe(-5,-4)(5,4)426 \psset{solidmemory}427 \psSolid[object=plantype,428 definition=equation,429 args={[0 0 1 0]},430 base=-2 2 -3 3,431 name=monplan,432 ]433 \psSolid[object=plan,434 definition=plantype,435 fillcolor=Aquamarine,436 planmarks,437 args=monplan438 ]439 \axesIIID(0,0,0)(2,3,4)440 \end{pspicture*}441 442 \columnbreak443 444 \begin{verbatim}445 \psSolid[object=plan,446 definition=plantype,447 args=monplan448 fillcolor=Aquamarine,449 planmarks,450 ]451 \end{verbatim}452 \end{multicols}453 454 551 \subsection {Définition d'un plan à partir d'une face de solide} 455 552 … … 524 621 \end{verbatim} 525 622 \end{multicols} 526 527 \subsection {Définir un objet de type plan orienté}528 529 Lorsque l'on doit réutiliser plusieurs fois un même plan affine, il530 peut être intéressant de sauvegarder ses caractéristiques. En effet,531 si l'on sauvegarde le solide représenté, on ne sauvegarde que les532 sommets, les couleurs et les facettes~; on perd toute notion de repère533 et d'orientation. Pour conserver ces caractéristiques, on utilise une534 structure de donnée particulière, que nous nommerons de \textsl{type plan}.535 536 Pour créer un tel objet, on utilise \Cadre{[object=plantype]} avec, comme537 pour la définition d'un plan, les arguments \Cadre{[definition=...]} et538 \Cadre{[args=...]}. On utilise l'argument \Cadre{[name=...]} pour539 sauvegarder l'objet créé.540 541 Ce dernier pourra alors être réutilisé pour définir des sections542 planes ou des plans de projection.543 544 \bigskip545 546 Par exemple, le code ci-dessous est valide~:547 \begin{verbatim}548 \psset{solidmemory}549 \psSolid[object=plantype,550 definition=equation,551 args={[0 0 1 0]},552 base=-2 2 -3 3,553 name=monplan,554 ]555 \end{verbatim}556 557 \llap {\dbend } La fabrication d'une telle structure est indispensable558 pour pouvoir utiliser la macro \verb+\psProjection+. Dans tous les559 cas, ne pas oublier d'activer l'option \Cadre{\texttt{solidmemory}} pour560 pouvoir réutiliser cet objet.561 623 562 624 trunk/doc/par-projectioncourbe.tex
r78 r80 79 79 \begin{verbatim} 80 80 \defFunction[algebraic]{1_sin}(x) 81 {2*sin(1/x)} 82 {} 83 {} 81 {2*sin(1/x)}{}{} 84 82 \psset{plan=monplan} 85 83 ... 86 \psProjection[object=courbe, 87 linecolor=red, 88 range=-3 3,resolution=720, 89 function=1_sin, 90 ] 84 \psProjection[object=courbe,linecolor=red, 85 range=-3 3,resolution=720,function=1_sin] 91 86 \end{verbatim} 92 87 \end{gbar} 88 \vskip -10mm 93 89 94 90 \end{multicols} trunk/doc/par-projectiondroite.tex
r79 r80 102 102 {ABC}$. 103 103 104 \item \Cadre {[definition=axesymdroite]} ; 105 \verb+args=+$d$ $D$. Symétrique de la droite $d$ par rapport à la 106 droite $D$. 107 108 \item \Cadre {[definition=rotatedroite]} ; 109 \verb+args=+$d$ $I$ $r$. Image de la droite $d$ par la rotation de 110 centre $I$ et d'angle $r$ (en degrés) 111 112 \item \Cadre {[definition=translatedroite]} ; 113 \verb+args=+$d$ $u$. Image de la droite $d$ par la translation de 114 vecteur $\vec u$. 104 115 105 116 \end{itemize} trunk/doc/par-section.tex
r66 r80 1 1 \section {Sectionner un solide par un plan} 2 2 3 \subsection{Tracer l'intersection d'un plan et d'un solide} 4 3 5 \subsubsection{Les paramètres} 4 C'est l'option \Cadre{intersectionplan=\{[a b c d]\}} qui permet de tracer l'intersection d'un plan et d'un solide. L'argument entre les crochets contient les paramètres du plan affine ayant pour équation : $ax+by+cz+d=0$. Il est possible de dessiner l'intersection du solide avec plusieurs plans en plaçant à la suite les paramètres de ces plans comme dans l'exemple suivant. 6 7 C'est l'option \Cadre{intersectionplan=\{[a b c d]\}} qui permet de 8 tracer l'intersection d'un plan et d'un solide. L'argument entre les 9 crochets contient les paramètres du plan affine ayant pour équation : 10 $ax+by+cz+d=0$. Il est possible de dessiner l'intersection du solide 11 avec plusieurs plans en plaçant à la suite les paramètres de ces plans 12 comme dans l'exemple suivant. 5 13 6 14 Le tracé est activé avec \Cadre{intersectiontype=0} ou toute autre valeur $\geq0$. 7 15 8 La couleur du tracé est choisie dans l'option \Cadre{intersectioncolor=(bleu) (rouge) etc.} et l'épaisseur par \Cadre{intersectionlinewidth=1 2 etc.} On donne successivement dans l'ordre, l'épaisseur de chaque tracé en points. 16 La couleur du tracé est choisie dans l'option 17 \Cadre{intersectioncolor=(bleu) (rouge) etc.}. On donne successivement 18 dans l'ordre, l'épaisseur de chaque tracé par 19 \Cadre{intersectionlinewidth=1 2 etc.} (dimensions en picas). 9 20 10 21 Le tracé en traits discontinus des parties cachées sera activé avec \Cadre{action=draw}. … … 13 24 \begin{pspicture}(-3,-2)(3,7) 14 25 \psset{SphericalCoor=true,lightsrc=viewpoint,viewpoint=50 20 20,Decran=50} 15 %\lightsource16 26 \psset{lightsrc=viewpoint} 17 27 \psSolid[object=cylindre, … … 134 144 135 145 \subsection{Tranche d'une pyramide} 146 136 147 \subsubsection{Marquage des lignes de niveau et première découpe} 137 Cette pyramide est créée comme un \Cadre{object=new} en donnant le liste des coordonnées des sommets et des faces. 138 \begin{gbar} 139 \begin{verbatim} 148 149 Cette pyramide est créée comme un \Cadre{object=new} en donnant le 150 liste des coordonnées des sommets et des faces. 151 \begin{gbar} 152 \begin{verbatim} 140 153 sommets= 141 154 0 -2 0 %% 0 … … 144 157 4 0 0 %% 3 145 158 0 0 5, %% 4 146 faces={159 faces={ 147 160 [3 2 1 0] 148 161 [4 0 3] … … 150 163 [4 2 1] 151 164 } 152 \end{verbatim}165 \end{verbatim} 153 166 \end{gbar} 154 167 Dans une première étape, facultative, on marque les lignes de découpe. … … 156 169 \begin{verbatim} 157 170 intersectiontype=0, 158 intersectionplan={[0 0 1 -1] 159 [0 0 1 -2]}, 171 intersectionplan={[0 0 1 -1] [0 0 1 -2]}, 160 172 intersectionlinewidth=1 2, 161 173 intersectioncolor=(bleu) (rouge) … … 394 406 \end{pspicture} 395 407 \end{center} 408 396 409 \subsection{Coupe d'un octaèdre par un plan parallèle à l'une des faces} 410 397 411 \subsubsection{Voir l'intérieur} 398 Rappelons que ce sont les options \Cadre{rm=0,hollow} qui permettent, l'une d'enlever la face de découpe \Cadre{rm=0} et l'autre \Cadre{hollow} de voir l'intérieur. 412 Rappelons que ce sont les options \Cadre{rm=0,hollow} qui permettent, 413 l'une d'enlever la face de découpe \Cadre{rm=0} et l'autre 414 \Cadre{hollow} de voir l'intérieur. 415 416 Dans l'exemple ci-dessous, on commence par construire les objets 417 nécessaires, sans les dessiner (\verb+action=none+). 418 419 On construit l'octaèdre, on nomme $G$ le centre de la face d'indice 420 $1$, puis on définit le point $H$ vérifiant $\overrightarrow{OH} = 421 0,8\overrightarrow {OG}$. On définit ensuite le plan $P$ passant par 422 $H$ et parallèle à la face d'indice $1$ de l'octaèdre. On pratique 423 ensuite la séparation de l'octaèdre par le plan $P$. 399 424 400 425 \begin{LTXexample}[width=7.5cm] 401 426 \begin{pspicture}(-3.5,-3)(4.5,5) 402 \psset{SphericalCoor=true,viewpoint=100 5 10,Decran=80,a=4} 403 %\lightsource 404 \psset{lightsrc=viewpoint} 405 \pstVerb{/distance 0.4 4 mul def % 0.4*a 406 /n_x 45 cos 35.2644 cos mul def 407 /n_y 45 sin 35.2644 cos mul def 408 /n_z 35.2644 sin def 409 /xH distance n_x mul def 410 /yH distance n_y mul def 411 /zH distance n_z mul def 412 }% 413 \psset{solidmemory} 427 \psset{SphericalCoor=true,viewpoint=100 5 10,Decran=80, 428 lightsrc=viewpoint,solidmemory,action=none} 414 429 \psSolid[object=octahedron, 415 plansepare={ 416 [ n_x % a 417 n_y % b 418 n_z % c 419 distance neg % d 420 ]}, 421 name=part, 422 action=none] 423 \psSolid[object=load, 424 rm=0, 425 hollow, 426 fillcolor={[rgb]{0.7 1 0.7}}, 427 incolor={[rgb]{1 1 0.7}}, 428 load=part1] 429 \psPoint(xH,yH,zH){H} 430 \psPoint(0,0,0){O}\psdot(H) 431 \psline[linestyle=dashed](O)(H) 432 \psSolid[object=plan, 433 definition=normalpoint, 434 args={xH yH zH [n_x n_y n_z 180]}, 435 base=-4 4 -4 4,action=draw,showBase] 436 \psProjection[object=texte, 437 fontsize=10,pos=dc,text=H, 438 normal=n_x n_y n_z -30](xH,yH,zH) 430 a=4,name=my_octahedron,] 431 \psSolid[object=point, 432 definition=solidcentreface, 433 args=my_octahedron 1, 434 name=G,] 435 \psSolid[object=point, 436 definition=mulv3d, 437 args=G .8, 438 name=H,] 439 \psSolid[object=plantype, 440 definition=solidface, 441 args=my_octahedron 1, 442 base=-4 4 -4 4, 443 name=P,](H,,) 444 \psSolid[object=load, 445 load=my_octahedron, 446 plansepare=P, 447 name=part] 448 \psSolid[object=load,load=part1, 449 rm=0,hollow,action=draw**, 450 fillcolor={[rgb]{0.7 1 0.7}}, 451 incolor={[rgb]{1 1 0.7}},] 452 \psSolid[object=plan,args=P, 453 action=draw,showBase] 454 \psSolid[object=line, 455 args=0 0 0 H, 456 linestyle=dashed,] 457 \psProjection[object=point,plan=P,args=0 0, 458 fontsize=20,pos=cl,text=H,phi=90,] 439 459 \axesIIID[linecolor=blue,linewidth=0.4pt](0,0,0)(4,4,4) 440 460 \end{pspicture} 441 461 \end{LTXexample} 462 442 463 \subsubsection{On considère le solide comme plein} 443 L'option \Cadre{fcol=0 (YellowOrange)} permet de colorier la face de découpe qui est la face \Cadre{0}. 464 465 L'option \Cadre{fcol=0 (YellowOrange)} permet de colorier la face de 466 découpe qui est la face \Cadre{0}. 444 467 445 468 \begin{LTXexample}[width=7.5cm] 446 469 \begin{pspicture}(-3.5,-3)(4.5,5) 447 \psset{SphericalCoor=true,viewpoint=100 5 10,Decran=80,a=4} 448 %\lightsource 449 \psset{lightsrc=viewpoint} 450 \pstVerb{/distance 0.4 4 mul def % 0.4*a 451 /n_x 45 cos 35.2644 cos mul def 452 /n_y 45 sin 35.2644 cos mul def 453 /n_z 35.2644 sin def 454 /xH distance n_x mul def 455 /yH distance n_y mul def 456 /zH distance n_z mul def 457 }% 458 \psset{solidmemory} 470 \psset{SphericalCoor=true,viewpoint=100 5 10,Decran=80, 471 lightsrc=viewpoint,solidmemory,action=none} 459 472 \psSolid[object=octahedron, 460 plansepare={ 461 [ n_x % a 462 n_y % b 463 n_z % c 464 distance neg % d 465 ]}, 466 name=part, 467 action=none] 473 a=4,name=my_octahedron,] 474 \psSolid[object=point, 475 definition=solidcentreface, 476 args=my_octahedron 1, 477 name=G,] 478 \psSolid[object=point, 479 definition=mulv3d, 480 args=G .8, 481 name=H,] 482 \psSolid[object=plantype, 483 definition=solidface, 484 args=my_octahedron 1, 485 base=-4 4 -4 4, 486 name=P,](H,,) 487 \psSolid[object=load, 488 load=my_octahedron, 489 plansepare=P, 490 name=part] 491 \psSolid[object=load, 492 load=part1, 493 fcol=0 (YellowOrange), 494 action=draw**, 495 fillcolor={[rgb]{0.7 1 0.7}},] 496 \psSolid[object=plan,args=P, 497 action=draw,showBase] 498 \psSolid[object=line, 499 args=0 0 0 H, 500 linestyle=dashed,] 501 \psProjection[object=point,plan=P,args=0 0, 502 fontsize=20,pos=cl,text=H,phi=90,] 503 \axesIIID[linecolor=blue,linewidth=0.4pt](0,0,0)(4,4,4) 504 \end{pspicture} 505 \end{LTXexample} 506 507 \subsubsection{Les deux parties du solide découpé} 508 509 On rappelle que c'est le sens de la normale du plan de séparation qui 510 détermine le numérotage des deux parties : \Cadre{0} celle qui est 511 \textit{au-dessus} de la normale et \Cadre{1} celle qui est 512 \textit{au-dessous}. Pour les deux parties, la face de découpe porte 513 le numéro \Cadre{0}. 514 S'il y a plusieurs faces de découpe, comme dans le cas du tore elles 515 sont numérotées \Cadre{0, 1 etc.} 516 517 On opère en deux étapes, mise en mémoire des deux parties du solide découpé : 518 \begin{gbar} 519 \begin{verbatim} 520 \psSolid[object=load, 521 load=my_octahedron, 522 plansepare=P, 523 name=part] 524 \end{verbatim} 525 \end{gbar} 526 Puis placement et traitement de chacune des parties : 527 \begin{gbar} 528 \begin{verbatim} 468 529 \psSolid[object=load, 469 530 fcol=0 (YellowOrange), 470 531 fillcolor={[rgb]{0.7 1 0.7}}, 471 532 load=part1] 472 \psPoint(xH,yH,zH){H} 473 \psPoint(0,0,0){O}\psdot(H) 474 \psline[linestyle=dashed](O)(H) 475 \psSolid[object=plan, 476 definition=normalpoint, 477 args={xH yH zH [n_x n_y n_z 180]}, 478 base=-4 4 -4 4,action=draw,showBase] 479 \psProjection[object=texte, 480 fontsize=12,pos=dc,text=H, 481 normal=n_x n_y n_z -30](xH,yH,zH) 482 \axesIIID[linecolor=blue,linewidth=0.4pt](3,3,2)(5,5,5) 483 \end{pspicture} 484 \end{LTXexample} 485 \subsubsection{Les deux parties du solide découpé} 486 On rappelle que c'est le sens de la normale du plan de séparation qui détermine le numérotage des deux parties : \Cadre{0} celle qui est \textit{au-dessus} de la normale et \Cadre{1} celle qui est \textit{au-dessous}. Pour les deux parties, la face de découpe porte le numéro \Cadre{0}. 487 S'il y a plusieurs faces de découpe, comme dans le cas du tore elles sont numérotées \Cadre{0, 1 etc.} 488 489 On opère en deux étapes, mise en mémoire des deux parties du solide découpé : 490 \begin{gbar} 491 \begin{verbatim} 492 \psset{solidmemory} 493 \psSolid[object=octahedron, 494 plansepare={ 495 [ n_x % a 496 n_y % b 497 n_z % c 498 distance neg % d 499 ]}, 500 name=part, 501 action=none] 502 \end{verbatim} 503 \end{gbar} 504 Puis placement et traitement de chacune des parties : 505 \begin{gbar} 506 \begin{verbatim} 507 \psSolid[object=load, 508 fcol=0 (YellowOrange), 509 fillcolor={[rgb]{0.7 1 0.7}}, 510 load=part1] 511 \psSolid[object=load, 512 fillcolor={[rgb]{0.7 1 0.7}}, 513 load=part0](2 xH mul,2 yH mul,2 zH mul) 533 \psSolid[object=load, 534 fillcolor={[rgb]{0.7 1 0.7}}, 535 load=part0](H 2 mulv3d,,) 514 536 \composeSolid 515 537 \end{verbatim} 516 538 \end{gbar} 539 517 540 \begin{LTXexample}[width=7.5cm] 518 541 \begin{pspicture}(-3.5,-3)(4.5,5) 519 \psset{SphericalCoor=true,viewpoint=100 5 20,Decran=150,a=2} 520 %\lightsource 521 \psset{lightsrc=viewpoint} 522 \pstVerb{/distance 0.4 2 mul def % 0.4*a 523 /n_x 45 cos 35.2644 cos mul def 524 /n_y 45 sin 35.2644 cos mul def 525 /n_z 35.2644 sin def 526 /xH distance n_x mul def 527 /yH distance n_y mul def 528 /zH distance n_z mul def 529 }% 530 \psset{solidmemory} 542 \psset{SphericalCoor=true,viewpoint=100 5 20,Decran=150, 543 lightsrc=viewpoint,solidmemory,action=none} 531 544 \psSolid[object=octahedron, 532 plansepare={ 533 [ n_x % a 534 n_y % b 535 n_z % c 536 distance neg % d 537 ]}, 538 name=part, 539 action=none] 540 \psSolid[object=load, 541 fcol=0 (YellowOrange), 542 fillcolor={[rgb]{0.7 1 0.7}}, 543 load=part1] 544 \psSolid[object=load, 545 fillcolor={[rgb]{0.7 1 0.7}}, 546 load=part0](2 xH mul,2 yH mul,2 zH mul) 545 a=2,name=my_octahedron,] 546 \psSolid[object=point, 547 definition=solidcentreface, 548 args=my_octahedron 1, 549 name=G,] 550 \psSolid[object=point, 551 definition=mulv3d, 552 args=G .7, 553 name=H,] 554 \psSolid[object=plantype, 555 definition=solidface, 556 args=my_octahedron 1, 557 base=-4 4 -4 4, 558 name=P,](H,,) 559 \psSolid[object=load, 560 load=my_octahedron, 561 plansepare=P, 562 name=part] 563 \psset{action=draw**} 564 \psSolid[object=load, 565 load=part1, 566 fcol=0 (YellowOrange), 567 fillcolor={[rgb]{0.7 1 0.7}},] 568 \psSolid[object=load, 569 fillcolor={[rgb]{0.7 1 0.7}}, 570 load=part0](H 2 mulv3d,,) 547 571 \composeSolid 548 572 \end{pspicture} 549 573 \end{LTXexample} 574 550 575 \subsection{Coupes d'un cube} 576 551 577 \subsubsection{Marquage de la ligne de découpage} 578 552 579 \begin{LTXexample}[width=8cm] 553 580 \psset{SphericalCoor=true,viewpoint=100 30 20,Decran=150} 554 581 \begin{pspicture}(-4,-3)(4,5) 555 \pstVerb{/distance 1.732 def556 /n_x 0.57735 def557 /n_y 0.57735 def558 /n_z 0.57735 def559 /xH distance n_x mul def560 /yH distance n_y mul def561 /zH distance n_z mul def562 }%563 582 \psframe(-4,-3)(4,5) 564 \psProjection[object=texte, 565 fontsize=10,pos=dc,text=H, 566 normal=n_x n_y n_z -30](xH,yH,zH) 567 \Normale[linecolor=red](distance,45,35.2644) 568 \psSolid[object=cube,a=2,action=draw,intersectiontype=0, 569 intersectionplan={ 570 [ n_x % a 571 n_y % b 572 n_z % c 573 distance neg]}, 583 \psset{solidmemory} 584 \psSolid[object=plantype,definition=normalpoint, 585 args={1 1 1 [1 1 1]},name=P] 586 \psSolid[object=cube,a=2,action=draw, 587 intersectiontype=0, 588 intersectionplan=P, 574 589 intersectionlinewidth=2, 575 intersectioncolor=(rouge)](1,1,1) 576 \psPoint(xH,yH,zH){H} 577 \psPoint(0,0,0){O} 578 \psline[linestyle=dashed](O)(H) 579 \psdot(H) 590 intersectioncolor=(rouge), 591 ](1,1,1) 592 \psProjection[object=point, 593 args=0 0,fontsize=10,pos=dc, 594 text=H,phi=-30,plan=P, 595 ] 596 \psSolid[object=line, 597 linestyle=dashed, 598 args=0 0 0 1 1 1] 599 \psSolid[object=vecteur, 600 linecolor=red, 601 args=1 1 1 .7 mulv3d](1,1,1) 580 602 \axesIIID[linecolor=blue](2,2,2)(2.5,2.5,2.5) 581 603 \end{pspi
