Changeset 80

Show
Ignore:
Timestamp:
07/07/08 14:51:33 (6 months ago)
Author:
jpv
Message:

Version 4.0

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/doc/par-affinage.tex

    r66 r80  
    3939couleur de remplacement. 
    4040 
    41 \newpage 
     41%\newpage 
    4242\begin{multicols}{2} 
    4343\psset{unit=0.5} 
  • trunk/doc/par-anneaux.tex

    r66 r80  
    107107\psSolid[object=anneau,fillcolor=yellow,h=3,R=8,r=6,RotX=90,RotZ=10](0,0,0) 
    108108\end{verbatim} 
    109  
    110 \newpage 
    111  
    112109 
    113110\subsection {Un simple anneau à section triangulaire} 
  • trunk/doc/par-chanfrein.tex

    r45 r80  
    3939 
    4040L'option \verb+chanfrein+ permet de chanfreiner un solide. Cette 
    41 option utilise l'argument \verb+chanfreincoeff+ (valeur $0,2$ par 
     41option utilise l'argument \verb+chanfreincoeff+ (valeur $0,8$ par 
    4242défaut) qui indique le rapport $k$ à utiliser ($0<k<1$). Ce rapport 
    4343est celui d'une homothétie de cetre le centre de la face considérée. 
  • trunk/doc/par-changements.tex

    r45 r80  
    44 
    55\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. 
    610 
    711\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
    22 
    33\begin{itemize} 
     
    55\texttt{solides.pro}. 
    66\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)}. 
    138\end{itemize} 
     9 
     10 
     11Ce package est disponible à l'url  
     12\url{http://syracuse.eu.org/syracuse/pstricks/pst-solides3d/} 
     13 
     14De nombreux exemples sont publiés ici~: 
     15\url{http://syracuse.eu.org/lab/bpst/pst-solides3d} 
     16 
     17Et enfin, la version de développement est disponible sur le svn de 
     18mélusine~: 
     19\url{http://syracuse-dev.org/pst-solides3d} 
  • trunk/doc/par-definirfonction.tex

    r2 r80  
    2828\verb!<x(var)>! \verb!<y(var)>! \verb!<z(var)>! & On y met des 
    2929fonctions dépendant des variables définies pour les directions 
    30 euclidiens $x,\,y,\,z$. Si une de ces trois directions n'est pas 
    31 voulue, insérez  un 0 entre les parenthèses -- \c{c}a vous donne la 
    32 possibilité de définir aussi des fonctions en plane
     30euclidienness $x,\,y,\,z$. Si une de ces trois directions n'est pas 
     31voulue, insérez  un 0 entre les parenthèses -- ce qui vous donne la 
     32possibilité de définir aussi des projetés plans de courbes de fonctions
    3333\end{tabular} 
    3434\end{table} 
     
    3939Voil\`{a} quelques exemples: 
    4040\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}! 
    4242 
    43     donne un cercle dans le plane $x,\,z$ avec le rayon 3 en notation RPN
     43    donne un cercle de rayon 3 dans le plan $xOz$ (notation RPN)
    4444    \item \verb!\defFunction[algebraic]{helice}(t){cos(t)}{sin(t)}{t}! 
    4545 
    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 
    4757\end{itemize} 
    4858 
    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 
     60macro, et elle ne permet pour le moment pas de choisir des noms 
     61de variables quelconques, car ils risquent d'entrer en conflit avec 
     62des noms déjà existant. Merci d'utiliser des noms analogues à ceux 
     63utilisés dans la documentation. Une bonne stratégie consiste à 
     64utiliser systématiquement un ou plusieurs caractères numériques à la 
     65fin de vos noms de variables. 
  • trunk/doc/par-definitionmaillage.tex

    r52 r80  
    117117\end{multicols} 
    118118 
    119 \newpage 
    120119\subsection {La sphère} 
    121120 
  • trunk/doc/par-eclairageponctuel.tex

    r66 r80  
    44lumineuse : 
    55\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 
     8avec l'observateur. 
    79  \item \texttt{[lightintensity=2]} (valeur par défaut). 
    810\end{itemize} 
     
    1416\begin{pspicture}(-6,-5)(4,5) 
    1517\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
    1719\psSolid[object=cube,RotZ=30](0,2,0) 
    1820\psSolid[object=cylindrecreux,RotX=30,RotZ=-30,fillcolor=cyan,incolor=red](4,-3,0) 
     
    2022\begin{verbatim} 
    2123\psset{Decran=1e3, 
    22        viewpoint=1e3 0 1e3
    23        lightsrc=1e3 0 1e3
     24       viewpoint=500 0 1000
     25       lightsrc=viewpoint
    2426       mode=5} 
    2527\psSolid[object=cube,RotZ=30](0,2,0) 
     
    3234\begin{pspicture}(-6,-5)(4,5) 
    3335\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} 
    3537\psSolid[object=cube,lightintensity=3,RotX=90,fillcolor=yellow](0,3,0) 
    3638\psSolid[object=cube,lightintensity=1,RotX=90,fillcolor=yellow](3,-3,0) 
     
    3941\psset{Decran=30, 
    4042       viewpoint=30 30 30, 
    41        lightsrc=0 1e3 1e3
     43       lightsrc=viewpoint
    4244       mode=3} 
    4345\psSolid[object=cube, 
  • trunk/doc/par-grille.tex

    r66 r80  
    11\section {La grille} 
    22 
    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. 
     3L'objet \Cadre{grille} permet d'obtenir un solide plan. 
     4Le paramètre \Cadre{base=$x{min}$ ${x{max}}$ ${y{min}}$ 
     5${y{max}}$]} permet de spécifier la taille de la grille. 
    56 
    67\begin{multicols}{2} 
     
    2324\end{multicols} 
    2425 
    25 Le paramètre \verb+[ngrid=+$n_1$ $n_2$\verb+]+ permet de spécifier le 
     26Le paramètre \Cadre{[ngrid=$n_1$ $n_2$]} permet de spécifier le 
    2627maillage de la grille. Si $n_2$ est absent, on considère que $n_2 = 
    2728n_1$. 
  • trunk/doc/par-lignedeniveau.tex

    r66 r80  
    1313 
    1414\item \Cadre{[intersectionplan=\{$eq_1$ ... $eq_n$\}]} 
    15 définit la liste des équations $e_i$ des plans de coupe. 
     15définit la liste des équations $e_i$ des plans de coupe. Les $e_i$ 
     16peuvent être également des objets de type plan. 
    1617 
    1718\item \Cadre{[intersectionlinewidth=$w_1$ ... $w_n$]} 
  • trunk/doc/par-modes.tex

    r2 r80  
    5050\end{pspicture} 
    5151\end{center} 
    52 \newpage 
     52%\newpage 
  • trunk/doc/par-new.tex

    r66 r80  
    66de toutes les faces du solide, une face de solide étant caractérisée 
    77par la liste des indices des sommets la constituant, ceux-ci étant 
    8 \textbf {rangés dans le sens trigonométrique lorsque l'on ragarde la 
     8\textbf {rangés dans le sens trigonométrique lorsque l'on regarde la 
    99face du coté extérieur}. 
    1010 
    1111\subsection {Exemple 1 : une maison} 
    12  
    13 %% exemple 1 
    14  
     12\vskip -10mm 
    1513\begin{multicols}{2} 
    16  
    1714\bgroup 
    1815\psset{unit=0.5} 
    1916\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
    2219\psSolid[object=new, 
    2320    sommets= 
     
    3936\end{pspicture*} 
    4037\egroup 
    41  
    4238\columnbreak 
    43  
    4439\begin{verbatim} 
    4540\psSolid[object=new, 
  • trunk/doc/par-nommersolide.tex

    r66 r80  
    4343      ngrid=3, 
    4444      action=none, 
    45       name=A1
     45      name=A
    4646      ](0,0,0) 
    4747\psSolid[object=load, 
    4848   deactivatecolor, 
    49    load=A1
     49   load=A
    5050\composeSolid 
    5151\end{pspicture*} 
     
    6161      ngrid=3, 
    6262      action=none, 
    63       name=A1
     63      name=A
    6464      ](0,0,0) 
    6565\psSolid[object=load, 
    6666   deactivatecolor, 
    67    load=A1
     67   load=A
    6868\composeSolid 
    6969\end{verbatim} 
     
    7171 
    7272 
    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 }  
     74Avec l'option \verb+solidmemory+, les noms de variables sont 
     75relativement bien encapsulés, et il n'y a pas de conflit avec les 
     76variables de dvips par exemple. Il reste par contre le risque de 
     77surcharge des noms utilisés par \verb+solides.pro+. On peut utiliser 
     78tous les noms de variables à un seul carctère alphabétique, mais il 
     79faut é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  
    11\section {L'objet \texttt{plan}} 
    22 
    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 
     3Le statut de l'objet \verb+plan+ est tout à fait particulier dans 
     4\verb+pst-solides3d+. En effet, tous les objets vus jusqu'à présents 
     5ont une structure commune~: ils sont de type \textsl{solid}. Autrement 
     6dit ils sont entièrement définis par une liste de sommets, de faces et 
     7de couleurs.  
     8Or pour de nombreuses applications, il est nécessaire d'avoir des 
     9renseignements complémentaires pour un plan~: une origine, une 
     10orientation, une base de référence, etc...  
     11 
     12Pour pouvoir répondre à ces exigences, il a été créé une autre 
     13structure de données, dite de type \textsl {plan}, qui permet de 
     14stocker toutes les informations nécessaires. Idéalement, toutes les 
     15manipulations de plan vont transiter par un tel objet. Ce n'est qu'au 
     16moment de la représentation que l'objet de type \textsl {plan\/} sera 
     17converti en un objet de type \textsl {solid\/} représentable par la 
     18macro \verb+\psSolid+. 
     19 
     20\subsection {Définir un objet de type plan orienté} 
     21 
     22Pour créer un tel objet, on utilise \Cadre{[object=plantype]} qui 
     23né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 
     37Un objet de type \textsl{plan\/} permet donc de décrire une portion de 
     38plan affine orienté. Pour une définition complète d'un tel objet, il 
     39nous faut une origine $I$, une base vectorielle $(\vec u, \vec v)$ de ce 
    640plan, une étendue sur l'axe $(I, \vec u)$ et une étendue sur l'axe 
    741$(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. 
     42De plus, on pourra spécifier le maillage souhaité, autrement dit le 
     43nombre de facettes utilisées pour représenter cette portion de plan 
     44affine lors de la transformation en objet de type \textsl{solid}. 
     45 
     46Ce type d'objet peut être utilisé pour définir des sections 
     47planes, et il est obligatoire pour définir un plan de projection. Par 
     48contre, son utilisation implique la possibilité de sauvegarde des 
     49donné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 
     60Nous verrons plus loin les différentes méthodes disponibles pour 
     61définir un plan. Donnons ici seulement un exemple de définition d'un 
     62plan 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} 
     71La séquence précédente vient de définir la variable $monplan$ comme 
     72désignant un objet de type \textsl{plan\/} représentant une portion 
     73d'un plan affine orienté d'équation $z=0$. 
     74 
     75\subsection {Représentation d'un objet de type plan orienté} 
     76 
     77Pour 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 
     83Par exemple la séquence 
     84\begin{verbatim} 
     85\psSolid[object=plan,args=monplan] 
     86\end{verbatim} 
     87permet de représenter le plan défini au paragraphe précédent. 
     88 
     89\subsection {Utilisation basique (sans \text{solidmemory})} 
     90 
     91En 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} 
     104Ces arguments sont communs aux objets \verb+plan+ et \verb+plantype+. 
     105 
     106\llap {\dbend } 
     107Dans 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 
     109faut cependant bien garder en mémoire que la méthode <<~naturelle~>>, 
     110ou 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} 
    20156 
    21157\subsection {Options spécifiques} 
    22158 
    23 L'objet \verb+plan+ possède plusieurs options spécifiques~: 
     159L'objet \verb+plan+ possède plusieurs options spécifiques d'affichage~: 
    24160\Cadre{[planmarks]} qui projette l'impression des axes et graduations, 
    25161\Cadre{[plangrid]} qui projette l'impression d'un quadrillage, 
     
    413549\end{multicols} 
    414550 
    415 \subsection {Définir un plan à partir d'un objet de type plan} 
    416  
    417 On utilise \Cadre{[definition=plantype]} et 
    418 \Cadre{[args=\textsl{name}]} où \textsl {name} désigne le nom de 
    419 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=monplan 
    438 ] 
    439 \axesIIID(0,0,0)(2,3,4) 
    440 \end{pspicture*} 
    441  
    442 \columnbreak 
    443  
    444 \begin{verbatim} 
    445             \psSolid[object=plan, 
    446                definition=plantype, 
    447                args=monplan 
    448                fillcolor=Aquamarine, 
    449                planmarks, 
    450             ] 
    451 \end{verbatim} 
    452 \end{multicols} 
    453  
    454551\subsection {Définition d'un plan à partir d'une face de solide} 
    455552 
     
    524621\end{verbatim} 
    525622\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, il 
    530 peut être intéressant de sauvegarder ses caractéristiques. En effet, 
    531 si l'on sauvegarde le solide représenté, on ne sauvegarde que les 
    532 sommets, les couleurs et les facettes~; on perd toute notion de repère 
    533 et d'orientation. Pour conserver ces caractéristiques, on utilise une 
    534 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, comme 
    537 pour la définition d'un plan, les arguments \Cadre{[definition=...]} et 
    538 \Cadre{[args=...]}. On utilise l'argument \Cadre{[name=...]} pour 
    539 sauvegarder l'objet créé. 
    540  
    541 Ce dernier pourra alors être réutilisé pour définir des sections 
    542 planes ou des plans de projection. 
    543  
    544 \bigskip 
    545  
    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 indispensable 
    558 pour pouvoir utiliser la macro \verb+\psProjection+. Dans tous les 
    559 cas, ne pas oublier d'activer l'option \Cadre{\texttt{solidmemory}} pour 
    560 pouvoir réutiliser cet objet.  
    561623 
    562624 
  • trunk/doc/par-projectioncourbe.tex

    r78 r80  
    7979\begin{verbatim} 
    8080\defFunction[algebraic]{1_sin}(x) 
    81    {2*sin(1/x)} 
    82    {} 
    83    {} 
     81   {2*sin(1/x)}{}{} 
    8482\psset{plan=monplan} 
    8583... 
    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] 
    9186\end{verbatim} 
    9287\end{gbar} 
     88\vskip -10mm 
    9389 
    9490\end{multicols} 
  • trunk/doc/par-projectiondroite.tex

    r79 r80  
    102102{ABC}$.  
    103103 
     104\item \Cadre {[definition=axesymdroite]} ;  
     105\verb+args=+$d$ $D$. Symétrique de la droite $d$ par rapport à la 
     106droite $D$. 
     107 
     108\item \Cadre {[definition=rotatedroite]} ;  
     109\verb+args=+$d$ $I$ $r$. Image de la droite $d$ par la rotation de 
     110centre $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 
     114vecteur $\vec u$. 
    104115 
    105116\end{itemize} 
  • trunk/doc/par-section.tex

    r66 r80  
    11\section {Sectionner un solide par un plan} 
     2 
    23\subsection{Tracer l'intersection d'un plan et d'un solide} 
     4 
    35\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 
     7C'est l'option \Cadre{intersectionplan=\{[a b c d]\}} qui permet de 
     8tracer l'intersection d'un plan et d'un solide. L'argument entre les 
     9crochets 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 
     11avec plusieurs plans en plaçant à la suite les paramètres de ces plans 
     12comme dans l'exemple suivant.  
    513 
    614Le tracé est activé avec \Cadre{intersectiontype=0} ou toute autre valeur $\geq0$. 
    715 
    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. 
     16La couleur du tracé est choisie dans l'option 
     17\Cadre{intersectioncolor=(bleu) (rouge) etc.}. On donne successivement 
     18dans l'ordre, l'épaisseur de chaque tracé par 
     19\Cadre{intersectionlinewidth=1 2 etc.} (dimensions en picas). 
    920 
    1021Le tracé en traits discontinus des parties cachées sera activé avec \Cadre{action=draw}. 
     
    1324\begin{pspicture}(-3,-2)(3,7) 
    1425\psset{SphericalCoor=true,lightsrc=viewpoint,viewpoint=50 20 20,Decran=50} 
    15 %\lightsource 
    1626\psset{lightsrc=viewpoint} 
    1727\psSolid[object=cylindre, 
     
    134144 
    135145\subsection{Tranche d'une pyramide} 
     146 
    136147\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 
     149Cette pyramide est créée comme un \Cadre{object=new} en donnant le 
     150liste des coordonnées des sommets et des faces.  
     151\begin{gbar} 
     152\begin{verbatim} 
    140153   sommets= 
    141154      0 -2 0 %% 0 
     
    144157      4 0 0  %% 3 
    145158      0 0 5, %% 4 
    146   faces={ 
     159  faces={ 
    147160    [3 2 1 0] 
    148161    [4 0 3] 
     
    150163    [4 2 1] 
    151164  } 
    152  \end{verbatim} 
     165\end{verbatim} 
    153166\end{gbar} 
    154167Dans une première étape, facultative, on marque les lignes de découpe. 
     
    156169 \begin{verbatim} 
    157170   intersectiontype=0, 
    158    intersectionplan={[0 0 1 -1] 
    159                      [0 0 1 -2]}, 
     171   intersectionplan={[0 0 1 -1] [0 0 1 -2]}, 
    160172   intersectionlinewidth=1 2, 
    161173   intersectioncolor=(bleu) (rouge) 
     
    394406\end{pspicture} 
    395407\end{center} 
     408 
    396409\subsection{Coupe d'un octaèdre par un plan parallèle à l'une des faces} 
     410 
    397411\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. 
     412Rappelons que ce sont les options \Cadre{rm=0,hollow} qui permettent, 
     413l'une d'enlever la face de découpe \Cadre{rm=0} et l'autre 
     414\Cadre{hollow} de voir l'intérieur.  
     415 
     416Dans l'exemple ci-dessous, on commence par construire les objets 
     417nécessaires, sans les dessiner (\verb+action=none+). 
     418 
     419On 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} = 
     4210,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 
     423ensuite la séparation de l'octaèdre par le plan $P$. 
    399424 
    400425\begin{LTXexample}[width=7.5cm] 
    401426\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} 
    414429\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,] 
    439459\axesIIID[linecolor=blue,linewidth=0.4pt](0,0,0)(4,4,4) 
    440460\end{pspicture} 
    441461\end{LTXexample} 
     462 
    442463\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 
     465L'option \Cadre{fcol=0 (YellowOrange)} permet de colorier la face de 
     466découpe qui est la face \Cadre{0}.  
    444467 
    445468\begin{LTXexample}[width=7.5cm] 
    446469\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} 
    459472\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 
     509On rappelle que c'est le sens de la normale du plan de séparation qui 
     510dé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 
     513le numéro \Cadre{0}.  
     514S'il y a plusieurs faces de découpe, comme dans le cas du tore elles 
     515sont numérotées \Cadre{0, 1 etc.}  
     516 
     517On 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} 
     526Puis placement et traitement de chacune des parties : 
     527\begin{gbar} 
     528 \begin{verbatim} 
    468529\psSolid[object=load, 
    469530         fcol=0 (YellowOrange), 
    470531         fillcolor={[rgb]{0.7 1 0.7}}, 
    471532        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,,) 
    514536\composeSolid 
    515537 \end{verbatim} 
    516538\end{gbar} 
     539 
    517540\begin{LTXexample}[width=7.5cm] 
    518541\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} 
    531544\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,,) 
    547571\composeSolid 
    548572\end{pspicture} 
    549573\end{LTXexample} 
     574 
    550575\subsection{Coupes d'un cube} 
     576 
    551577\subsubsection{Marquage de la ligne de découpage} 
     578 
    552579\begin{LTXexample}[width=8cm] 
    553580\psset{SphericalCoor=true,viewpoint=100 30 20,Decran=150} 
    554581\begin{pspicture}(-4,-3)(4,5) 
    555 \pstVerb{/distance 1.732 def 
    556          /n_x 0.57735 def 
    557          /n_y 0.57735 def 
    558          /n_z 0.57735 def 
    559          /xH distance n_x mul def 
    560          /yH distance n_y mul def 
    561          /zH distance n_z mul def 
    562          }% 
    563582\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, 
    574589   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) 
    580602\axesIIID[linecolor=blue](2,2,2)(2.5,2.5,2.5) 
    581603\end{pspi