\input /home/jp/tex_doc/format/myplain.tex %\magnification 1200 \def \listingpath {% /var/www/syracuse/texpng/jpv/guide_jps/} \def \epspath {% /var/www/syracuse/texpng/jpv/guide_jps/} \input \listingpath macros-doc.tex \long \def \catalogue#1#2{% $$ \vcenter {\hsize .45 \hsize $$\boxepsillustrate {#1}$$ } \hfill \vcenter {\hsize .55 \hsize #2} $$ } \titre {jps2ps~: version 0.16} \centerline {{\sl par Jean-Paul Vignault}} \centerline {{\sl Groupe des Utilisateurs de Linux Poitevins (GULP)}} \centerline {(|jpv@melusine.eu.org|)} \centerline {\today } \vskip \titreskip %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% debut du manuel %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \input \listingpath macros_compl-doc.tex \pageno -1 \egroup \pageno 1 Ce document présente les différences entre la version $0.16$ et la précédente. \paragraphe {Divers} \syntaxe \longref {$array_1$} {doublebubblesort} {$array_2$ $array_3$} {$array_3$ est obtenu en triant $array_1$ par ordre croissant et $array_2$ correspond à la position des indices de départ dans le tableau d'arrivé, ie si $array_1 = [13, 12, 14, 11]$, alors $array_2 = [3, 1, 0, 2]$} \longref {$u$} {normalize} {$v$} {$v$ est le vecteur de norme 1 obtenu à partir de $u$, ie. $\vec v = {1\over \Vert u\Vert }\vec u$} \endsyntaxe \paragraphe {Solides} \sparagraphe {Solides non convexes} Pour le tracé des solides non convexes, on utilise {\sl l'algorithme du peintre\/} qui consiste à représenter les faces du solide en commaneçant par les plus éloignées de l'observateur. Ce tracé est obtenu par la commande |drawsolid**|. Dans ce cas, il n'y a pas de tracé des arêtes cachées. \syntaxe \longref {$solid$} {drawsolid**} {$-$} {affiche le solide $solid$ en utilisant l'algorithme du peintre} \endsyntaxe \sparagraphe {Modes de résolution} Pour la plupart des solides, un {\sl mode de résolution\/} est proposé, afin de gérer la finesse du maillage. Ce procédé permet de préparer ses dessins en basse résolution, pour ne passer en haute résolution (plus onéreuse en termes de temps de calculs) qu'au moment final de la production. Pour chacun des solides concernés, $5$~modes sont proposés, numérotés de $0$ à $4$. Le niveau $0$ correspond à la résolution la plus faible. Si aucun mode n'est demandé, on utilise le mode de résolution par défaut. Le numéro de mode est transmis, optionnellement, par un exécutable contenant l'indice choisi. Par exemple $$ \hbox {|0 3 2 {0} newcylindre|} $$ génére un cylindre avec le mode de résolution $0$. On peut également créer son propre mode. Pour cela on passe en paramètre une chaîne de caractères contenant les valeurs souhaitées. Ainsi $$ \hbox {|0 3 2 (10 36) newcylindre|} $$ génére un cylindre avec un maillage défini par $36$~points sur la circonférence, et $10$~étages (soit $11$~points) sur la hauteur. \sparagraphe {\' Eclairage par une source lumineuse ponctuelle} La source lumineuse est définie par sa position $lightsrc$, sa couleur $lightcolor$ et son intensité $lightintensity$. On modifie ces paramètres en utilisant les commandes |setlightsrc|, |setlight| et |setlightintensity|. Seule $lightintensity$ est définie par défaut. Si $lightsrc$ n'est pas définie, alors le solide est colorié avec des teintes uniformes. Si $lightsrc$ est défini mais pas $lightcolor$, alors on considère que la lumière est blanche, et l'intensité de la teinte de chaque facette dépend de l'orientation par rapport à $lightsrc$. Enfin, si en plus la variable $lightcolor$ est définie, alors les solides sont considérés blanc et la teinte de chaque facette dépend de l'orientation de la source lumineuse et de sa couleur. Par exemple, voici un cube tricolore \exempledble {solide_light_02} {.4}{.5} \sparagraphe {Solides précalculés} Quelques nouveaux solides font leur apparition~: le tronc de cône creux, le cylindre creux, le cône creux et le tore. $$ \boxepsillustrate {solide_04.ps} $$ \syntaxe \longref {$r$ $R$ $option$} {newtore} {$solid$} {crée un nouveau tore, de type $solid$, de centre $O$, de rayon principal $R$, et de rayon du tube $r$} \longref {$z_0$ $z_1$ $r_1$ $option$} {newcylindrecreux} {$solid$} {crée un nouveau cylindre creux, de type $solid$, d'axe $Oz$, de rayon $r$, allant du plan $z = z_0$ jusqu'au plan $z = z_1$} \longref {$z_0$ $r$ $z_1$} {newcone} {$solid$} {crée un nouveau cône, de type $solid$, d'axe $Oz$, de rayon $r$, allant du plan $z = z_0$ jusqu'au plan $z = z_1$} \longref {$z_0$ $r_0$ $z_1$ $r_1$ $option$} {newtroncconecreux} {$solid$} {crée un nouveau tronc de cône creux, de type $solid$, d'axe $Oz$, de rayon de base $r_0$ (sur le plan $z = z_0$) et de rayon au sommet $r_1$ (sur le plan $z = z_1$)} \endsyntaxe \sparagraphe {Opérations sur les solides} Quelques nouvelles opérations pour les solides~: \syntaxe \longref {$solid$} {videsolid} {$-$} {ajoute au solide $solid$ ses faces internes} \longref {$solid$} {creusesolid} {$-$} {enlève les faces d'indice $0$ et $1$ du solide $solid$, puis ajoute toutes les faces internes} \longref {$solid$ $i$} {solidrmface} {$-$} {enlève la face d'indice $i$ du solide $solid$} \longref {$solid$ $string_0$ $string_1$} {inoutputcolors} {$-$} {affecte la couleur définie par $string_0$ aux faces internes du solide $solid$, et la couleur définie par $string_1$ aux faces externes} \longref {$solid$ $string$} {outputcolors} {$-$} {affecte la couleur définie par $string$ à toutes les faces du solide $solid$} \endsyntaxe \exempledble {solide_gen_05} {.3}{.6} Un cylindre ouvert~: \exempledble {solide_gen_06} {.3}{.6} Une ouverture dans une sphère~: \exempledble {solide_gen_07} {.3}{.6} Il est également possible de \og fusionner\fg \ deux solides pour n'en obtenir qu'un. Ceci permet d'appliquer l'algorithme du peintre sur l'ensemble. Par exemple~: \exempledble {solide_fuz} {.4}{.5} \syntaxe \longref {$solid_1$ $solid_2$} {solidfuz} {$solid$} {dépose sur la pile le solide obtenu à partir de la fusion des solides $solid_1$ et $solid_2$} \endsyntaxe \paragraphe {Divers} \sparagraphe {Environnement picture} \ssparagraphe {Le dynamomètre} Un nouvel objet fait son apparition~: le dynamomètre, offert par Lu\' \i s A. V. Ferreira. \catalogue {dynamometre.ps} {Nom~: |dinamometro| \par Points spéciaux~: \par \item {--} |aiguille|~: centre de l'aiguille du dynamomètre \item {--} |bb|~: comme son nom l'indique \par } \ssparagraphe {Cartes à jouer} Grâce aux fichier SVG de David Bellot (|http://david.bellot.free.fr/svg-cards/|), l'environnement picture s'enrichit de $54$~cartes et $14$~dos de cartes. Voici par exemple les $13$~cartes de trèfle $$ \boxepsillustrate {cartes.ps} $$ Le nom des objets~: |01-coeur|, |02-coeur|, \dots , |V-coeur|, |D-coeur|, |R-coeur| pour la couleur {\sl c\oe ur}, et des noms analogues pour trèfle, carreau et pique. On dispose également de $14$~dos de cartes $$ \boxepsillustrate {cartes_dos.ps} $$ dont les noms sont~: |carte_dos_01|, |carte_dos_02|, |carte_dos_03|, |carte_dos_04|, |carte_dos_05|, |carte_dos_06|, |carte_dos_07|, |carte_dos_08|, |carte_dos_09|, |carte_dos_10|, |carte_dos_11|, |carte_dos_13|, |carte_dos_14|, |carte_dos_bleu|. \sparagraphe {Commandes 3d} Cinq macros pour dessiner des triangles sphériques~: \syntaxe \longref {$r$ $\theta $ $\phi$} {rtp2xyz} {$x$ $y$ $z$} {Passage des coordonnées sphériques vers les coordonnées cartésiennes} \longref {$r$ $\theta _1$ $\phi _1$ $r$ $\theta _2$ $\phi _2$} {arcspherique} {$-$} {trace l'arc de cercle entre les points $A$ et $B$ de coordonnées respectives $(r, \theta _1, \phi _1)$ et $(r, \theta _2, \phi _2)$} \longref {$r$ $\theta _1$ $\phi _1$ $r$ $\theta _2$ $\phi _2$} {geodesique\_sphere} {$-$} {trace le cercle passant par les points $A$ et $B$ de coordonnées respectives $(r, \theta _1, \phi _1)$ et $(r, \theta _2, \phi _2)$} \longref {$A$ $B$ $C$} {trianglespherique} {$-$} {trace le triangle sphérique $ABC$, où les points $A$, $B$ et et $C$ sont donnés par leurs coordonnées sphériques respectives $(r, \theta _1, \phi _1)$, $(r, \theta _2, \phi _2)$ et $(r, \theta _3, \phi _3)$} \longref {$A$ $B$ $C$} {trianglespherique*} {$-$} {version étoilée de |trianglespherique|} \endsyntaxe \bye