pst solides3d doc

Upload: joegarcia

Post on 14-Jan-2016

19 views

Category:

Documents


1 download

DESCRIPTION

Gráficas con Látex

TRANSCRIPT

  • pst-solides3d :guide de lutilisateur

    v. 4.0 (2008/07/06)

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    bb

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    Jean-Paul VIGNAULT, Manuel LUQUE, Arnaud SCHMITTBUHL , , 1

    6 juillet 2 008

    1Avec la collaboration de : Jrgen GILG , Jean-Michel SARLAT .

  • 2

  • Table des matires

    0.1 Constitution du package Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70.2 Avant-propos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70.3 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70.4 Changements par rapport aux versions prcdentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    0.4.1 Changements par rapport la version 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70.4.2 Changements par rapport la version 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    1 Commandes de bases 91.1 Choix du point de vue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.2 Les axes en 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.3 Les principaux solides prdfinis et leurs paramtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.4 Positionner un solide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    1.4.1 Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.4.2 Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    2 Les options de \psSolid 192.1 Commandes de trac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.2 vider un solide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.3 Numroter les facettes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.4 Enlever des facettes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.5 Pointage et numrotation des sommets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.6 Les couleurs et les dgrads de couleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    2.6.1 Couleurs prdfinies par loption [dvipsnames] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.6.2 Couleurs prdfinies par loption [svgnames] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.6.3 Dgrad dans lespace HSB, saturation et brillance maximales . . . . . . . . . . . . . . . . . . . . . . . 272.6.4 Dgrad dans lespace HSB, saturation et brillance fixes . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.6.5 Dgrad dans lespace HSB, cas gnral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.6.6 Dgrad dans lespace RGB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.6.7 Dgrad dans lespace CMYK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.6.8 Dgrad entre 2 couleurs nommes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.6.9 Dsactiver la gestion des couleurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    2.7 Colorier les facettes une une . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.8 Gestion de la transparence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.9 Dfinition du maillage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    2.9.1 Le cube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.9.2 La sphre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.9.3 Cylindres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.9.4 Tore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    2.10 Les modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.11 clairage par une source lumineuse ponctuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.12 Tronquer les sommets dun solide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.13 Affiner un solide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.14 Chanfreiner un solide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362.15 Loption transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    2.15.1 Facteur dchelle identique appliqu aux trois coordonnes . . . . . . . . . . . . . . . . . . . . . . . . 37

    3

  • 4 TABLE DES MATIRES

    2.15.2 Facteur dchelle diffrent pour les trois coordonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382.15.3 Transformation lie la distance du point lorigine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392.15.4 Torsion dune poutre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    2.16 Tracs dintersections planes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    3 Utilisation de fichiers externes 433.1 Fichiers .dat (spcifique pst-solides3d) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    3.1.1 criture de fichiers .dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.1.2 Lecture de fichiers .dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    3.2 Fichiers .obj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.2.1 criture de fichiers .obj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.2.2 Lecture de fichiers .obj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    3.3 Fichiers .off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.3.1 criture de fichiers .off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.3.2 Lecture de fichiers .off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    4 Quelques objets spcifiques 454.1 La grille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454.2 Lobjet plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    4.2.1 Prsentation : type plan et type solid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.2.2 Dfinir un plan orient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.2.3 Options spcifiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.2.4 Dfinir un plan partir dune quation cartsienne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474.2.5 Dfinir un plan partir dun vecteur normal et dun point . . . . . . . . . . . . . . . . . . . . . . . . . 484.2.6 Dfinition dun plan partir dune face de solide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    4.3 Vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.3.1 Dfinition partir des coordonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.3.2 Dfinition partir de 2 points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.3.3 Autres modes de dfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    4.4 Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.4.1 Dfinition partir des coordonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.4.2 Autres modes de dfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    4.5 Les godes et leurs duales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524.5.1 Prsentation mathmatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524.5.2 Construction avec pst-solides3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524.5.3 Quelques exemples de godes et de duales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524.5.4 Les paramtres des godes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.5.5 Conseils pour la construction rapide des godes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554.5.6 Dautres exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    5 Fabriquer de nouveaux solides 575.1 Le code jps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575.2 Dfinir une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575.3 Courbes de fonctions de R vers R3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.4 Tubes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

    5.4.1 Utilisation avec PSTricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595.4.2 Utilisation avec le \codejps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605.4.3 Amliorer la rapidit daffichage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615.4.4 Autres exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    5.5 Le prisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655.6 Construire partir du scratch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    5.6.1 Exemple 1 : une maison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685.6.2 Exemple 2 : Hyperbolode de rayon fixe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685.6.3 Exemple 3 : Import de fichiers externes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

    5.7 Solide monoface Solide biface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705.7.1 face triangulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

  • TABLE DES MATIRES 5

    5.7.2 face dfinie par une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705.8 Solide ruban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

    5.8.1 Un simple paravent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715.8.2 Un paravent sinusodal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715.8.3 Une surface ondule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725.8.4 Un paravent toil : version 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725.8.5 Un paravent toil : version 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

    5.9 Solide anneau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745.9.1 Commande pr-dfinie : lanneau section rectangulaire. . . . . . . . . . . . . . . . . . . . . . . . . . . 745.9.2 Un simple anneau section triangulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755.9.3 Un anneau variable section triangulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755.9.4 Lanneau section pneu : anneau cylindrique artes chanfreines. . . . . . . . . . . . . . . . . . . 765.9.5 Bobine vide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775.9.6 Dautres anneaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

    5.10 Gnralisation de la notion de cylindre et de cne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785.10.1 Cylindre ou nappe cylindrique quelconque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785.10.2 Cne ou nappe conique quelconque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    5.11 Les surfaces paramtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835.11.1 Mthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835.11.2 Exemple 1 : dessin dun coquillage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845.11.3 Exemple 2 : une hlice tubulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845.11.4 Exemple 3 : un cne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855.11.5 Un site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

    6 Surfaces dfinies par une fonction z = f (x, y) 876.1 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876.2 Exemple 1 : selle de cheval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886.3 Exemple 2 : selle de cheval sans maillage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886.4 Exemple 3 : parabolode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896.5 Exemple 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906.6 Exemple 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916.7 Exemple 6 : parabolode hyperbolique dquation z = xy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926.8 Exemple 8 : surface dquation z = xy(x2+ y2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

    7 Utilisation avance 957.1 Nommer un solide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957.2 Sectionner un solide par un plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

    7.2.1 Tracer lintersection dun plan et dun solide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967.2.2 Coupes dun solide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967.2.3 Tranche dune pyramide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 987.2.4 Coupe dun octadre par un plan parallle lune des faces . . . . . . . . . . . . . . . . . . . . . . . . . 1017.2.5 Coupes dun cube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1037.2.6 Sections multiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1057.2.7 Sections dun tore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077.2.8 Autres exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

    7.3 Fusionner des solides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1087.4 Fusion avec le code jps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

    7.4.1 Le code jps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1097.4.2 Un ion chlorure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1117.4.3 Un prototype de vhicule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1127.4.4 Une roue ou bien une station spatiale ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1147.4.5 Intersection de deux cylindres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157.4.6 Intersection dune sphre et dun cylindre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157.4.7 Runion de deux anneaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1167.4.8 La molcule de mthane : modle en bois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1167.4.9 Lion thiosulfate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

  • 6 TABLE DES MATIRES

    8 Interaction avec PSTricks 1198.1 Positionner un point connu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1198.2 Tracer une ligne brise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1198.3 Tracer un polygone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1208.4 Transformer un point et le mmoriser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1218.5 Annoter un schma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

    9 Projections 1239.1 Prsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239.2 Le paramtre visibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239.3 Dfinition du plan de projection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239.4 Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

    9.4.1 Dfinition directe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239.4.2 Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239.4.3 Nommage et sauvegarde dun point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249.4.4 Autres dfinitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

    9.5 Vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1259.5.1 Dfinition directe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1259.5.2 Autres dfinitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

    9.6 Droites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1269.6.1 Dfinition directe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1269.6.2 Autres dfinitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

    9.7 Cercles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1279.7.1 Dfinition directe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1279.7.2 Autres dfinitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

    9.8 Polygones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1279.9 Lignes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1289.10 Angle droit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1299.11 Courbes de fonction numriques et courbes paramtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

    9.11.1 Courbe de fonction numrique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1299.11.2 Courbes paramtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

    9.12 Texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1309.12.1 Les paramtres et les options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1309.12.2 Exemples de projets sur un plan quelconque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1319.12.3 Exemples de projections sur une face dun solide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1339.12.4 Exemples de projections sur diffrentes faces dun solide . . . . . . . . . . . . . . . . . . . . . . . . . . 134

    10 Annexe 13710.1 Les paramtres de pst-solid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13710.2 Les pomes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

  • 0.1. CONSTITUTION DU PACKAGE DISTRIBUTION 7

    0.1 Constitution du package Distribution Fichiers pst-solides3d.sty, pst-solides3d.tex et solides.pro. Documentation et exemples : pst-solides3d-doc.tex(pdf).Ce package est disponible lurl http://syracuse.eu.org/syracuse/pstricks/pst-solides3d/De nombreux exemples sont publis ici : http://syracuse.eu.org/lab/bpst/pst-solides3dEt enfin, la version de dveloppement est disponible sur le svn demlusine : http://syracuse-dev.org/pst-solides3d

    0.2 Avant-proposLe package prsent dans ce document est issu dun travail collaboratif initi sur la liste de diffusion du site syracuse

    (http://melusine.eu.org/syracuse).Lide est ne de la confrontation des travaux de Jean-Paul Vignault sur le logiciel jps2ps1 avec ceux deManuel Luque

    sur PSTricks2, en particulier dans le domaine de la reprsentation des solides dans une scne en 3d.Les deux auteurs ont dcid dunifier leurs efforts dans lcriture dun package PSTricks ddi la reprsentation de

    scnes 3d. Le travail seffectue sur la machine melusine, dans un environnement informatique prpar et maintenu parJean-Michel Sarlat.

    Lquipe sest ensuite toffe avec larrive dArnaud Schmittbuhl et de Jrgen Gilg, ce dernier stant spcialis dansle beta-test base danimations3.

    0.3 PrsentationLe package pst-solides3d permet dobtenir, avec PSTricks, des vues en 3d de solides prdfinis ou construits par

    lutilisateur. On trouvera la plupart des solides usuels que lon peut reprsenter avec ou sans les artes caches et dont lacouleur peut varier avec lclairage.

    Ce package permet galement de projeter des textes ou des dessins simples en 2d sur un plan quelconque ou sur uneface dun solide dj construit.

    Du point de vue utilisateur, la plupart des fonctionnalits sont accessibles par trois macros TEX : \psSolid, quisert manipuler les objets 3 dimensions, \psSurface, cousine de la premire et ddie la reprsentation de surfacesdfinies par une quation du type f (x, y) = z, et \psProjection qui permet de projeter un dessin en 2 dimensions surun plan quelconque de la scne 3d reprsente.

    Dans lutilisation, deux langages cohabitent : dune part PSTricks et ses macros o lutilisateur retrouvera la syntaxeusuelle, dautre part Postscript que lon voit apparatre dans les argument optionnels des prcdentes.

    Le parti pris a t de limiter strictement le champ daction de PSTricks, pour le cantonner au rle dinterface entreTEX et Postscript. Plus prcisment, le rle de PSTricks a strictement t circonscrit celui de la transmission desparamtres vers Postscript, ce dernier soccupant de la totalit des calculs ncessaires puis de laffichage.

    Pour lensemble de ces procdures de calculs et daffichages, nous utilisons une librairie Postscript dveloppe pourune autre application (le logiciel jps2ps). Le code postscript utilisant cette librairie est appel code jps.

    Le but de ce prsent document est de dcrire la syntaxe PSTricks pour chacune des oprations offertes par le package.

    0.4 Changements par rapport aux versions prcdentes

    0.4.1 Changements par rapport la version 3.0

    La macro de projection est compltement remise plat, et on perd la compatibilit. Il faut maintenant utiliser unobjet de type plan pour dfinir une projection.

    Lobjet courbe utilise maintenant largument r . Pour retrouver le comportement prcdent, il faut spcifierr = 0.

    Loption resolution de lobjet courbe est remplace par loption ngrid Suppression des arguments tracelignedeniveau et associs.

    1http://melusine.eu.org/syracuse/bbgraf/2http://melusine.eu.org/syracuse/pstricks/pst-v3d/3http://melusine.eu.org/syracuse/pstricks/pst-solides3d/animations/

  • 8 TABLE DES MATIRES

    0.4.2 Changements par rapport la version 2.0

    Loption hue nest plus un boolen. La gestion de lchelle en postscript se fait dsormais avec le mcanisme jps. Pour se dplacer lchelle, lescommandes smoveto, srmoveto, slineto, srlineto remplacent les commandes respectives moveto, rmoveto,lineto, rlineto.

  • Chapitre 1

    Commandes de bases

    1.1 Choix du point de vue

    x

    y

    z

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    b

    V

    Les coordonnes de lobjet, ici le cube bleut, sont donnes dans le repre Oxyz. Les coordonnes du point de vue(V ), sont donnes dans ce mme repre, soit en coordonnes sphriques, avec loption [SphericalCoor] , soit encoordonnes cartsiennes qui est loption par dfaut.

    Exemple : [SphericalCoor,viewpoint=50 30 20]

    Lcran est plac perpendiculairement la direction OV , une distance de V : [Decran=50] (valeur par dfaut),cette valeur peut tre positive ou ngative.

    9

  • 10 CHAPITRE 1. COMMANDES DE BASES

    1.2 Les axes en 3Dla commande \axesIIID[options](x1,y1,z1)(x2,y2,z2) trace les axes Ox, Oy et Oz en pointills de O

    respectivement, jusquau point de coordonnes (x1, 0,0) pour laxe des x, (0, y1, 0) pour laxe des y et (0,0, z1) pour laxedes z et ensuite en trait continu jusquaux points (x2, 0,0), (0, y2, 0) et (0,0, z2).

    Les options sont les suivantes : toutes les options de couleur, dpaisseur du trait, ainsi que des caractristiques des flches. labelsep=valeur qui permet de placer la distance souhaite de lextrmit de la flche, ltiquette de laxe,

    sa valeur par dfaut est labelsep=5pt , il sagit de la distance relle en trois dimensions et non sur lcran.

    Le choix des tiquettes(labels) de chaque axe avec loption axisnames=a,b,c , avec par dfaut axisnames=x,y,z .

    La possibilit de spcifier, le style de ces tiquettes avec loption : axisemph= , par dfaut il ny a pas de style

    prdfini, cest--dire que si lon ne prcise rien on aura x, y, z .

    showOrigin est un boolen, true par dfaut, sil est positionn showOrigin=false les pointills ne serontplus tracs depuis lorigine.

    mathLabel est un boolen, true par dfaut, qui dans ce cas crit les tiquettes en mode mathmatique, posi-tionn mathLabel=false on passe dans le mode usuel.

    Les tiquettes sont places aux extrmits des axes dans leur prolongement.

    x

    y

    z

    1 \begin{pspicture}(-2,-2)(3,3)

    2 \psset{viewpoint=100 30 20,Decran=100}

    3 \psframe(-2,-2)(3,3)

    4 \psSolid[object=cube,a=2,

    5 action=draw*,

    6 fillcolor=magenta!20]

    7 \axesIIID[showOrigin=false](1,1,1)(3,2,2.5)

    8 \end{pspicture}

    a b

    c1 \begin{pspicture}(-2,-1)(3,4)

    2 \psset{viewpoint=100 45 20,Decran=100}

    3 \psframe(-2,-1)(3,4)

    4 \psSolid[object=cylindre,h=2,r=1,

    5 action=draw*,mode=4,

    6 fillcolor=green!20]

    7 \axesIIID[linewidth=1pt,linecolor=red,arrowsize=5pt,

    8 arrowinset=0,axisnames={a,b,c},

    9 axisemph={\boldmath\Large\color{red}},

    10 labelsep=10pt]

    11 (1,1,2)(2,2,3)

    12 \end{pspicture}

  • 1.3. LES PRINCIPAUX SOLIDES PRDFINIS ET LEURS PARAMTRES 11

    1.3 Les principaux solides prdfinis et leurs paramtres

    La commande de base est : \psSolid[object=nom](x, y, z) qui permet de tracer lobjet dsign par nom aupoint de coordonnes (x, y, z).

    Les objets disponibles sont : cube, cylindre, cylindrecreux, cone, conecreux, tronccone,troncconecreux, sphere, calottesphere, tore, anneau, tetrahedron, octahedron, dodecahedron,

    isocahedron, prisme, grille, parallelepiped, face, ruban, surface, plan, geode,vecteur.

    Le tableau ci-dessous donne un exemple de chacun des solides avec ses paramtres propres :

    solideparamtrespar dfaut

    vue code

    cube [a=4] arte

    x

    y

    z

    \psSolid[

    object=cube,

    a=2,

    action=draw*,

    fillcolor=magenta!20]

    cylindre

    [h=6,r=2]

    hauteur et rayonle maillage :

    [ngrid=n1 n2]

    x

    y

    z

    \psSolid[

    object=cylindre,

    h=5,r=2,

    fillcolor=white,

    ngrid=4 32](0,0,-3)

    cylindre creux

    [h=6,r=2]

    hauteur et rayonle maillage :

    [ngrid=n1 n2]

    x

    y

    z

    \psSolid[

    object=cylindrecreux,

    h=5,r=2,

    fillcolor=white,

    mode=4,

    incolor=green!50]

    (0,0,-3)

  • 12 CHAPITRE 1. COMMANDES DE BASES

    solideparamtrespar dfaut

    vue code

    cone

    [h=6,r=2]

    hauteur et rayonle maillage :

    [ngrid=n1 n2]

    x

    y

    z

    \psSolid[

    object=cone,

    h=5,r=2,

    fillcolor=cyan,

    mode=4]%

    cone creux

    [h=6,r=2]

    hauteur et rayonle maillage :

    [ngrid=n1 n2]

    x

    y

    z

    \psSolid[

    object=conecreux,

    h=5,r=2,

    RotY=-60,

    fillcolor=white,

    incolor=green!50,

    mode=4]%

    tronc de cone

    [h=6,r0=4,r1=1.5]

    hauteur et rayonsle maillage :

    [ngrid=n1 n2]

    x

    y

    z

    \psSolid[

    object=tronccone,

    r0=2,r1=1.5,h=5,

    fillcolor=cyan,

    mode=4]%

    tronc de

    cone creux

    [h=6,r0=4,r1=1.5]

    hauteur et rayonsle maillage :

    [ngrid=n1 n2]

    x

    y

    z

    \psSolid[

    object=troncconecreux,

    r0=2,r1=1,h=5,

    fillcolor=white,

    mode=4]%

  • 1.3. LES PRINCIPAUX SOLIDES PRDFINIS ET LEURS PARAMTRES 13

    solideparamtrespar dfaut

    vue code

    sphre

    [r=2] rayonle maillage :

    [ngrid=n1 n2]

    x

    y

    z

    \psSolid[

    object=sphere,

    r=2,fillcolor=red!25,

    ngrid=18 18]%

    calotte

    sphrique

    [r=2] rayon[phi=0,theta=90]

    latitudes pour dcouperla calotte respectivementvers le bas et le haut x

    y

    z

    \psSolid[

    object=calottesphere,

    r=3,ngrid=16 18,

    theta=45,phi=-30,

    hollow,RotY=-80]%

    tore

    [r0=4,r1=1.5]

    rayon intrieurrayon moyenle maillage :

    [ngrid=n1 n2]

    x

    y

    z\psSolid[

    r1=2.5,r0=1.5,

    object=tore,

    ngrid=18 36,

    fillcolor=green!30,

    action=draw*]%

    anneau

    cylindrique

    [r1=2.5,r0=1.5,

    h=6,section=...]

    rayon extrieurrayon intrieur

    hauteursection

    rectangulaire

    x

    y

    z

    \psSolid[

    object=anneau,

    fillcolor=yellow,

    h=1.5,r1=4,r0=3]%

    Une documentation spcifique aux anneaux circulaires et aux paralllpipdes est fournie dans la partie exemples : doc-grille-parallelepiped.tex(.pdf) ; doc-anneau.tex(.pdf).

  • 14 CHAPITRE 1. COMMANDES DE BASES

    solideparamtrespar dfaut

    vue code

    ttradre

    [a=2] rayonde la sphrecirconscrite

    \psSolid[

    object=tetrahedron,

    r=3,

    linecolor=blue,

    action=draw]%

    octadre

    [a=2] rayonde la sphrecirconscrite

    x

    y

    z

    \psSolid[

    object=octahedron,

    a=3,

    linecolor=blue,

    fillcolor=Turquoise]%

    dodcadre

    [a=2] rayonde la sphrecirconscrite

    \psSolid[

    object=dodecahedron,

    a=2.5,RotZ=90,

    action=draw*,

    fillcolor=OliveGreen]%

    icosadre

    [a=2] rayonde la sphrecirconscrite

    x

    y

    z

    \psSolid[

    object=icosahedron,

    a=3,

    action=draw*,

    fillcolor=green!50]%

    prisme

    [axe=0 0 1]

    direction de laxe[base=

    -1 -1 1 -1 0 1]

    coordonnesdes sommetsde la base

    [h=6] hauteurx

    y

    z

    \psSolid[

    object=prisme,

    action=draw*,

    linecolor=red,

    h=4]%

  • 1.3. LES PRINCIPAUX SOLIDES PRDFINIS ET LEURS PARAMTRES 15

    solideparamtrespar dfaut

    vue code

    grille [base=-X +X -Y +Y]

    x

    y

    z

    \psSolid[

    object=grille,

    base=-5 5 -3 3]%

    paralllpipde[a=4,b=a,c=a]

    centre en O

    x

    y

    z

    \psSolid[

    object=parallelepiped,%

    a=5,b=6,c=2,

    fillcolor=yellow]%

    (0,0,c 2 div)

    face

    [base=x0 y0 x1 y1

    x2 y2 etc.]

    les coordonnesdes sommetsdans le sens trigo

    x

    y

    z

    \psSolid[

    object=face,

    fillcolor=yellow,

    incolor=blue,

    base=0 0 3 0 1.5 3

    ](0,1,0)

    \psSolid[

    object=face,

    fillcolor=yellow,

    incolor=blue,

    base=0 0 3 0 1.5 3,

    RotX=180](0,-1,0)

    ruban

    [base=x0 y0 x1 y1

    x2 y2 etc.]

    [h=hauteur]

    [ngrid=valeur]

    nombre de maillesverticalement[axe=0 0 1]

    direction de linclinaisondu ruban

    x

    y

    z

    \psSolid[

    object=ruban,h=3,

    fillcolor=red!50,

    base=0 0 2 2 4 0 6 2,

    num=0 1 2 3,

    show=0 1 2 3,

    ngrid=3])

  • 16 CHAPITRE 1. COMMANDES DE BASES

    solideparamtrespar dfaut

    vue code

    surface

    voir ladocumentationspcifique

    -4-3-2-10123

    4

    -4 -3 -2 -1 0 1 2 3 4

    -4-3-2-101234

    x y

    z

    \psSurface[ngrid=.25 .25,

    incolor=Wwhite,axesboxed]

    (-4,-4)(4,4){%

    x dup mul y dup mul 3 mul

    sub x mul 32 div}

    new

    solide dfinipar les coordonnesdes sommetset les faces

    x

    y

    z

    \psSolid[object=new,

    action=draw,

    sommets=

    2 4 3

    -2 4 3

    -2 -4 3

    2 -4 3

    2 4 0

    -2 4 0

    -2 -4 0

    2 -4 0

    0 4 5

    0 -4 5,

    faces={

    [0 1 2 3]

    [7 6 5 4]

    [0 3 7 4]

    [3 9 2]

    [1 8 0]

    [8 9 3 0]

    [9 8 1 2]

    [6 7 3 2]

    [2 1 5 6]}]%

    courbe

    trac dune fonctionR > R3

    dfinie par sesquations paramtriques

    x

    y

    z

    \defFunction[algebraic]%

    {helice}(t)

    {3*cos(4*t)}{3*sin(4*t)}{t}

    \psSolid[object=courbe,r=0,

    range=0 6,

    linecolor=blue,linewidth=0.1,

    resolution=360,

    function=helice]%

  • 1.4. POSITIONNER UN SOLIDE 17

    1.4 Positionner un solide

    1.4.1 Translation

    La commande suivante \psSolid[object=cube,options](x,y,z)dplace le centre du cube au point de coordon-nes (x,y,z).

    Lexemple suivant va recopier le cube darte 1 aux points de coordonnes (0.5,0.5,0.5), (4.5,0.5,0.5) etc.afin que ces copies occupent les coins dun cube darte 5.

    x

    y

    z

    \psset{fillcolor=yellow,mode=3}

    \psSolid[object=cube](0.5,0.5,0.5)

    \psSolid[object=cube](4.5,0.5,0.5)

    \psSolid[object=cube](0.5,4.5,0.5)

    \psSolid[object=cube](0.5,0.5,4.5)

    \psSolid[object=cube](4.5,4.5,4.5)

    \psSolid[object=cube](4.5,0.5,4.5)

    \psSolid[object=cube](4.5,4.5,0.5)

    \psSolid[object=cube](0.5,4.5,4.5)

    1.4.2 Rotation

    La rotation seffectue dans lordre autour des axesOx,Oy etOz. Prenons lexemple dun paralllpipde rectangle,

    que lon va faire tourner successivement autour des axes Ox, Oy et Oz.

    xy

    z

    x y

    z

    [RotZ=60]

    )x y

    z

    [RotX=30]

    x y

    z

    [RotY=-45]

  • 18 CHAPITRE 1. COMMANDES DE BASES

  • Chapitre 2

    Les options de \psSolid

    2.1 Commandes de tracLa commande de trac se fait avec le paramtre action= dans la commande \psSolid.Quatres valeurs sont possibles :none : ne trace riendraw : trace le solide en structure fil de fer avec trac en pointill des artes cachesdraw* : trace le solide avec trac en pointill des artes caches et coloration des faces visiblesdraw** : trace le solide avec lalgorithme du peintre, sans les artes caches et avec coloration des faces visibles.Les commandes draw et draw* ne sont pertinentes que pour les solides convexes.

    2.2 vider un solideCertains des solides prdfinis ont un solide creux qui lui est naturellement associ (le cne, le tronc de cne, le

    cylindre, le prisme et la calotte sphrique). Pour ceux l, une option [hallow=boolean] est prvue. Positionn false,on a le solide habituel ; positionn true on a la version creuse.

    19

  • 20 CHAPITRE 2. LES OPTIONS DE \PSSOLID

    Exemple 1 : cylindre et cylindre creux

    \psSolid[object=cylindre,

    h=6,r=2,

    fillcolor=yellow,

    incolor=red,

    hollow,

    ](0,4,0)

    \psSolid[object=cylindre,

    h=6,r=2,

    fillcolor=yellow,

    ](0,4,0)

    Exemple 2 : prisme et prisme creux

    xy

    z

    \defFunction{F}(t){t cos 3 mul}{t sin 3 mul}{}

    \defFunction{G}(t){t cos}{t sin}{}

    \psSolid[

    object=grille,base=-6 6 -4 4,action=draw]%

    \psSolid[

    object=prisme,h=8,fillcolor=yellow,RotX=90,

    resolution=19,

    base=0 180 {F} CourbeR2+

    180 0 {G} CourbeR2+

    ](0,4,0)

    \axesIIID(3,4,3)(8,6,7)

    xy

    z\defFunction{F}(t){t cos 3 mul}{t sin 3 mul}{}

    \defFunction{G}(t){t cos}{t sin}{}

    \psSolid[

    object=grille,base=-6 6 -4 4,action=draw]%

    \psSolid[

    object=prisme,h=8,fillcolor=yellow,RotX=90,

    hollow,ngrid=4,incolor=red,

    resolution=19,

    base=0 180 {F} CourbeR2+

    180 0 {G} CourbeR2+

    ](0,4,0)

    \axesIIID(3,4,3)(8,6,7)

  • 2.3. NUMROTER LES FACETTES 21

    Exemple 3 : calotte sphrique et calotte sphrique creuse

    xy

    z

    \psSolid[object=calottesphere,r=3,

    ngrid=16 18,

    fillcolor=cyan!50,incolor=yellow,

    theta=45,phi=-30,hollow,RotY=-60]%

    xy

    z

    \psSolid[object=calottesphere,r=3,

    ngrid=16 18,fillcolor=cyan!50,

    incolor=yellow,theta=45,phi=-30]

    (0,0,1.5)

    2.3 Numroter les facettesLoption numfaces permet dafficher sur chaque face son indice rorrespondant. [numfaces=all] affiche tous les numros de faces ; [numefaces=0 1 2 3] affiche tous les numros de faces [0,1,2 et 3] ;

    Loption fontsize permet de fixer la taille de la police utilise. Enfin, le boolen visibility permet de spcifier si ondoit ou non afficher le numro de face si la face nest pas visible. Par dfaut, on a visibility=true, et on tient comptede la visibilit (ie. numro pas affich si la face nest pas visible)

    x

    y

    z\psSolid[object=grille,

    base=0 4 -2 2,

    numfaces=2 6 7 10,

    linecolor=gray](0,0,0)

    \psSolid[object=cube,

    RotY=90,

    ngrid=4,

    fontsize=15,

    action=draw,

    numfaces=all](0,0,0)

    Les options de \psSolid acceptent des commandes postcript, et en particulier les boucles for.Ainsi linstruction [numfaces=0 1 5 {} for] demande la numrotation de toutes les faces dont lindice est com-

    pris entre 0 et 5. Linstruction [numfaces=8 3 23 {} for] demande la numrotation dune face sur 3 entre les indices8 et 23.

  • 22 CHAPITRE 2. LES OPTIONS DE \PSSOLID

    x

    y

    z\axesIIID(0,0,0)(8,3,2)

    \psSolid[object=grille,

    RotY=90,

    RotZ=180,

    ngrid=1.,

    fontsize=15,

    numfaces=

    0 1 5 {} for

    8 3 23 {} for,

    base=-2 2 -3 3,

    visibility=false,

    action=draw](0,0,0)

    2.4 Enlever des facettesLargument [rm=1 2 8] permet de supprimer les facettes visibles 1, 2 et 8, afin de voir lintrieur des solides creux.

    \psSolid[rm=1 3 6,

    object=cylindrecreux,

    ngrid=2 6,

    h=6,r=2,fillcolor=green!50,

    incolor=yellow!50,RotZ=-60](0,0,-3)

    \psSolid[object=troncconecreux,

    rm=1 12 13 14,

    r0=3,r1=1,h=6,

    fillcolor=green!50,incolor=yellow,

    mode=3](0,0,-3)

  • 2.5. POINTAGE ET NUMROTATION DES SOMMETS 23

    2.5 Pointage et numrotation des sommetsUne option permet de pointer les sommets et/ou de les numroter soit globalement, soit individuellement. [show=all] pointe tous les sommets ; [num=all] numrote tous les sommets ; [show=0 1 2 3] pointe les sommets [0,1,2 et 3] ; [num=0 1 2 3] numrote les sommets [0,1,2 et 3].

    \psSolid[action=draw,

    object=cube,RotZ=30,

    show=all,num=all]%

    \psSolid[object=cube,

    RotZ=30,action=draw,

    show=0 1 2 3,

    num=0 1 2 3]%

    2.6 Les couleurs et les dgrads de couleurLargument [fillcolor=name] permet de spcifier la couleur souhaite pour les faces externes dun solide. Lar-

    gument [incolor=name] permet de spcifier la couleur souhaite pour les faces internes dun solide.Les valeurs possibles pour name sont toutes celles reconnues par PSTricks (et en particulier son package xcolor).On peut galement utiliser des dgrads de couleur dans les espaces HSB, RGB ou CMYK. On utilise pour cela les

    options [hue], [inhue] ou [inouthue] selon que lon considre respectivement les faces externes, les faces internes,ou lensemble des faces. Le nombre darguments de hue dtermine le cas de figure

    2.6.1 Couleurs prdfinies par loption [dvipsnames]

    Il y a 68 couleurs prdfinies, qui sont identifies dans le fichier solides.pro : Black, White, et les 66 couleurs ci-dessous.

    GreenYellow Yellow Goldenrod Dandelion Apricot Peach

    Melon YellowOrange Orange BurntOrange Bittersweet RedOrange

    Mahogany Maroon BrickRed Red OrangeRed RubineRed

  • 24 CHAPITRE 2. LES OPTIONS DE \PSSOLID

    WildStrawberry Salmon CarnationPink Magenta VioletRed Rhodamine

    Mulberry RedViolet Fuchsia Lavender Thistle Orchid

    DarkOrchid Purple Plum Violet RoyalPurple BlueViolet

    Periwinkle CadetBlue CornflowerBlue MidnightBlue NavyBlue RoyalBlue

    Blue Cerulean Cyan ProcessBlue SkyBlue Turquoise

    TealBlue Aquamarine BlueGreen Emerald JungleGreen SeaGreen

    Green ForestGreen PineGreen LimeGreen YellowGreen SpringGreen

    OliveGreen RawSienna Sepia Brown Tan Gray

    2.6.2 Couleurs prdfinies par loption [svgnames]

    Les couleurs suivantes sont reconnues par pstricks si lon utilise loption [svgnames]. Par contre, elles ne sont pasidentifies dans le fichier solides.pro : on ne peut les utiliser directement dans loption [fcol].Ces couleurs sont proposes par le package xcolor.

    AliceBlue AntiqueWhite Aqua Aquamarine Azure Beige

    Bisque Black BlanchedAlmond Blue BlueViolet Brown

  • 2.6. LES COULEURS ET LES DGRADS DE COULEUR 25

    BurlyWood CadetBlue Chartreuse Chocolate Coral CornflowerBlue

    Cornsilk Crimson Cyan DarkBlue DarkCyan DarkGoldenrod

    DarkGray DarkGreen DarkGrey DarkKhaki DarkMagenta DarkOliveGreen

    DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue

    DarkSlateGray DarkSlateGrey DarkTurquoise DarkViolet DeepPink DeepSkyBlue

    DimGray DimGrey DodgerBlue FireBrick FloralWhite ForestGreen

    Fuchsia Gainsboro GhostWhite Gold Goldenrod Gray

    Grey Green GreenYellow Honeydew HotPink IndianRed

    Indigo Ivory Khaki Lavender LavenderBlush LawnGreen

    LemonChiffon LightBlue LightCoral LightCyan LightGoldenrodYellow LightGray

    LightGreen LightGrey LightPink LightSalmon LightSeaGreen LightSkyBlue

  • 26 CHAPITRE 2. LES OPTIONS DE \PSSOLID

    LightSlateGray LightSlateGrey LightSteelBlue LightYellow Lime LimeGreen

    Linen Magenta Maroon MediumAquamarine MediumBlue MediumOrchid

    MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed

    MidnightBlue MintCream MistyRose Moccasin NavajoWhite Navy

    OldLace Olive OliveDrab Orange OrangeRed Orchid

    PaleGoldenrod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip PeachPuff

    Peru Pink Plum PowderBlue Purple Red

    RosyBrown RoyalBlue SaddleBrown Salmon SandyBrown SeaGreen

    Seashell Sienna Silver SkyBlue SlateBlue SlateGray

    SlateGrey Snow SpringGreen SteelBlue Tan Teal

    Thistle Tomato Turquoise Violet Wheat White

  • 2.6. LES COULEURS ET LES DGRADS DE COULEUR 27

    WhiteSmoke Yellow YellowGreen

    2.6.3 Dgrad dans lespace HSB, saturation et brillance maximales

    Il y a 2 arguments : [hue=h0 h1] o les nombres h0 et h1 vrifiant 0 h0 < h1 1 indiquent les bornes du premierparamtre dans lespace HSB.

    \psSolid[object=grille,

    base=-3 5 -3 3,

    linecolor=gray,

    hue=0 1](0,0,0)

    \psSolid[object=grille,

    base=-3 5 -3 3,

    linecolor=gray,

    hue=0 .3](0,0,0)

    \psSolid[object=grille,

    base=-3 5 -3 3,

    linecolor=gray,

    hue=.5 .6](0,0,0)

    2.6.4 Dgrad dans lespace HSB, saturation et brillance fixes

    Il y a 4 arguments : [hue=h0 h1 s b] o les nombres h0 et h1 vrifiant 0 h0 < h1 1 indiquent les bornes dupremier paramtre dans lespace HSB et o s et b sont les paramtres respectifs saturastion et brillance.

    \psSolid[object=grille,

    base=-3 5 -3 3,

    linecolor=gray,

    hue=0 1 .8 .7](0,0,0)

    \psSolid[object=grille,

    base=-3 5 -3 3,

    linecolor=gray,

    hue=0 1 .5 1](0,0,0)

    2.6.5 Dgrad dans lespace HSB, cas gnral

    Il y a 7 arguments : [hue=h0 s0 b0 h1 s1 b1 (hsb)] o les nombres hi , si et bi indiquent les bornes des paramtreHSB.

  • 28 CHAPITRE 2. LES OPTIONS DE \PSSOLID

    \psSolid[object=grille,

    base=-3 5 -3 3,

    linecolor=gray,

    hue=0 .8 1 1 1 .7 (hsb)](0,0,0)

    2.6.6 Dgrad dans lespace RGB

    Il y a 6 arguments : [hue=r0 g0 b0 r1 g1 b1] o les nombres ri , gi et bi indiquent les bornes respectives des 3paramtres RGB.

    \psSolid[object=grille,

    base=-3 5 -3 3,

    linecolor=gray,

    hue=1 0 0 0 0 1](0,0,0)

    2.6.7 Dgrad dans lespace CMYK

    Il y a 8 arguments : [hue=c0 m0 y0 k0 c1 m1 y1 k1] o les nombres ci , mi , yi et ki indiquent les bornes respectivesdes 4 paramtres CMYK.

    \psSolid[object=grille,

    base=-3 5 -3 3,

    linecolor=gray,

    hue=1 0 0 0 0 0 1 0](0,0,0)

    2.6.8 Dgrad entre 2 couleurs nommes

    Il y a deux paramtres [hue=(couleur1) (couleur2)] o couleur1 et couleur2 sont des noms de couleurs connuesdans solides.pro.

    \psSolid[object=grille,

    base=-3 5 -3 3,

    linecolor=gray,

    hue=(jaune) (CadetBlue)](0,0,0)

    Si on veut utiliser des couleurs dfinies par xcolor, on utilise les paramtres color1, color2, etc... de \psSolid.

    \psSolid[object=grille,

    base=-3 5 -3 3,

    linecolor=gray,

    color1=red!50,

    color2=green!20,

    hue=(color1) (color2)](0,0,0)

    2.6.9 Dsactiver la gestion des couleurs

    Pour certaines utilisations spcifiques, on peut avoir besoin de dsactiver la gestion des couleurs. Cest en particulierle cas lorsque lon utilise un objet dj prsent en mmoire ou dfini dans des fichiers externes, Dans ces configurations,

  • 2.7. COLORIER LES FACETTES UNE UNE 29

    si on ne dsactive pas la gestion des couleurs et si on nen dfinit pas de nouvelles, ce sont les couleurs par dfaut quivont surcharger celles qui taient sauvegardes.

    Pour dsactiver cette gestion, on utilise loption [deactivatecolor] .

    2.7 Colorier les facettes une uneLargument [fcol=i0 (c0) i1 (c1) . . .in (cn) ], o les ik sont des entiers et les ck des noms de couleurs, permet de

    spcifier la couleur de faces particulires. la face dincice ik correspond la couleur ck . Lentier n doit tre infrieur lindice maximum des faces du solide considr.

    Pour les noms de couleurs ck , il y a 68 valeurs prdfinies (soit tous les noms dfinis dans le fichier color.pro au12 octobre 2007). Ces valeurs sont : GreenYellow, Yellow, Goldenrod, Dandelion, Apricot, Peach, Melon, YellowO-range, Orange, BurntOrange, Bittersweet, RedOrange, Mahogany, Maroon, BrickRed, Red, OrangeRed, RubineRed,WildStrawberry, Salmon, CarnationPink,Magenta, VioletRed, Rhodamine,Mulberry, RedViolet, Fuchsia, Lavender,Thistle, Orchid, DarkOrchid, Purple, Plum, Violet, RoyalPurple, BlueViolet, Periwinkle, CadetBlue, Cornflower-Blue,MidnightBlue,NavyBlue, RoyalBlue, Blue,Cerulean,Cyan, ProcessBlue, SkyBlue,Turquoise, TealBlue,Aquama-rine, BlueGreen, Emerald, JungleGreen, SeaGreen,Green, ForestGreen, PineGreen, LimeGreen,YellowGreen, Spring-Green,OliveGreen, RawSienna, Sepia, Brown, Tan,Gray, Black, White. La liste de ces 68 couleurs est disponible dansla commande \colorfaces (voir exemple dutilisation dans le paragraphe sur le maillage du cube).

    Prvoir dans ce cas que le nombre de faces n

    1 n

    2+ 2(faces suprieure et infrieure) soit plus petit

    que 68 !Lutilisateur peut galement dfinir ses propres couleurs. Il dispose pour cela de deux mthodes : Il utilise lun des 4 arguments optionnels [color1], [color2], [color3], [color4] de \psSolid, puis il trans-met fcol une paire du type i (color1) o i est lindice de la face considre. Les arguments [color1],etc. . .sutilisent de la mme faon que les arguments color et incolor.Par exemple, la commande suivante est une commande valide :

    \psSolid[a=1,object=cube,color1=red!60!yellow!20,fcol=0 (color1)]%

    Il dfinit ses propres noms de couleurs avec la commande \pstVerb puis utilise ces noms avec largument [fcol].Par exemple :\pstVerb{/hetre {0.764 0.6 0.204 setrgbcolor} def

    /chene {0.568 0.427 0.086 setrgbcolor} def

    /cheneclair {0.956 0.921 0.65 setrgbcolor} def

    }%

    Puis ensuite :fcol=0 (hetre) 1 (chene) 2 (cheneclair)

    Les 4 arguments color1, color2, color3, color4 ont des valeurs par dfaut : color1=cyan !50 color2=magenta !60 color3=blue !30 color4=red !50

  • 30 CHAPITRE 2. LES OPTIONS DE \PSSOLID

    \psSolid[

    fcol=0 (Apricot)

    1 (Aquamarine)

    2 (Bittersweet)

    3 (ForestGreen)

    4 (Goldenrod)

    13 (GreenYellow)

    40 (Mulberry),

    object=cube,mode=3

    ]%

    \psSolid[

    fcol= 0 (Apricot)

    2 (Lavender)

    3 (SkyBlue)

    10 (LimeGreen)

    12 (OliveGreen),

    object=cylindre,

    h=4,

    ngrid=4 10,

    ](0,0,-2)

    Le choix des faces colorier peut se faire en utilisant un code PostScript :

    fcol=48 {i (Black) i 1 add (LimeGreen) i 2 add (Yellow) /i i 3 add store} repeat

    qui va colorier alternativement en noir, en vert et en jaune les facettes.

    Si loption hue est active, les facettes du solide sont colories avec le dgrad de couleurs de larc-en-ciel.

    \psset{viewpoint=50 50 50,Decran=86,

    lightsrc=50 20 1e2}

    \psSolid[r1=5,r0=1,object=tore,

    ngrid=16 18,hue=0 1]%

  • 2.8. GESTION DE LA TRANSPARENCE 31

    2.8 Gestion de la transparence

    Le paramtre [opacity=k] avec k rel vrifiant 0 k 1, permet de dfinir le niveau dopacit pour lensembledes tracs qui suivent. En code jps, on utilise linstruction quivalente k setfillopacity . Cette dernire trouvenotamment son application dans loption fcol. Par exemple, linstruction

    fcol=0 (.5 setfillopacity yellow)

    dfinit la face dindice 0 comme tant jaune, avec une opacit de 0,5.

    2.9 Dfinition du maillageLutilisateur peut spcifier le maillage du solide avec loption [ngrid] dans la commande \psSolid.Pour les objets cube, prisme, prismecreux, la syntaxe est [ngrid=n1] o n1 reprsente le nombre de mailles sur

    laxe vertical.Pour les objets cylindre,cylindrecreux,cone, conecreux,tronccone,troncconecreux, la syntaxe est [ngrid=n1 n2]

    o n1 est entier suprieur ou gal 1 ( 2 pour tore) reprsentant le nombre de mailles sur laxe vertical, et n2 est unentier reprsentant le nombre de divisions sur le cercle.

    Pour lobjet sphere, la syntaxe est [ngrid=n1 n2] o n1 est entier reprsentant le nombre de divisions sur laxevertical, et n2 est un entier reprsentant le nombre de divisions sur le cercle horizontal.

    Pour lobjet tore, la syntaxe est [ngrid=n1 n2] o n1 et n2 sont des entiers.Voici quelques exemples :

    2.9.1 Le cubez

    xyy

    b

    b

    b

    Pour le premier exemple, le maillage des faces est fix 4 4 facettes/face et la commande est la suivante :\psSolid[a=8,object=cube,ngrid=4,

    fillcolor=yellow]%

    Dans le deuxime exemple, le maillage des faces est fix 33 et les couleurs des facettes sont diverses. On utilise lepackage arrayjob pour stocker les couleurs :

    \newarray\colors

    \readarray{colors}{%

    Apricot&Aquamarine%

    etc.}

    Puis la liste des couleurs afficher est donne par la com-mande :

    \edef\colorfaces{}%

    \multido{\i=0+1}{67}{%

    \checkcolors(\i)

    \xdef\colorfaces{%

    \colorfaces\i\space(\cachedata)\space}

    }

    On place loption : fcol=\colorfaces. Le cube maillest appel par :

    \psSolid[a=8,object=cube,ngrid=3,%

  • 32 CHAPITRE 2. LES OPTIONS DE \PSSOLID

    fcol=\colorfaces,

    RotY=45,RotX=30,RotZ=20]%

    Loption [grid] permet, ventuellement, de ne pas tracerles traits du quadrillage.

    2.9.2 La sphre

    \psset{color1=cyan,color2=red}

    fcol=251 (OliveGreen) 232 (color1) 214 (color2),

    object=sphere,

    ngrid=16 18,

    RotX=180,RotZ=30

    ]%

    \psset{color1=cyan,color2=red}

    \psSolid[

    action=draw*,

    fcol=0 (OliveGreen) 2 (color1) 3 (color2),

    object=sphere,

    ngrid=4 4,

    RotX=180,RotZ=30

    ]%

    2.9.3 Cylindres

    \psset{color1=cyan,color2=red}

    \psSolid[

    fcol=0 (OliveGreen) 2 (color1) 3 (color2),

    h=5,r=2,

    object=cylindrecreux,

    ngrid=4 30,

    RotZ=30

    ](0,0,-2.5)

    \psset{color1=cyan,color2=red}

    \psSolid[

    action=draw*,

    fcol=0 (OliveGreen) 2 (color1) 3 (color2),

    object=cylindre,

    ngrid=2 12,

    RotY=-20

    ](0,0,-2.5)

  • 2.10. LES MODES 33

    2.9.4 Tore

    x y

    z\psSolid[r1=2.5,r0=1.5,

    object=tore,

    ngrid=4 36,

    fillcolor=green!30,

    action=draw**]%

    x y

    z\psSolid[r1=3.5,r0=1,

    object=tore,

    ngrid=9 18,

    fillcolor=magenta!30,

    action=draw**]%

    2.10 Les modesPour un certain nombre de solides, on a prdfini certains maillages. Le positionnement du paramtre [mode=0,

    1, 2, 3 ou 4] permet de passer du maillage prdfini le plus grossier [mode=0] au maillage prdfini le plus fin[mode=4].

    Ceci permet notamment de mettre au point une image avec tous les solides en [mode=0] afin dacclrer les calculs,avant de passer au [mode=4] pour une image dfinitive.

    [mode=0] [mode=1] [mode=2]

  • 34 CHAPITRE 2. LES OPTIONS DE \PSSOLID

    [mode=3] [mode=4] [mode=5] => [mode=4] forc

    2.11 clairage par une source lumineuse ponctuelleDeux paramtres, lun positionne la source, lautre fixe lintensit lumineuse : [lightsrc=20 30 50] en coordonnes cartsiennes, ou [lightsrc=viewpoint]pour faire concider la sourcelumineuse avec lobservateur.

    [lightintensity=2] (valeur par dfaut).

    \psset{Decran=1e3,

    viewpoint=500 0 1000,

    lightsrc=viewpoint,

    mode=5}

    \psSolid[object=cube,RotZ=30](0,2,0)

    \psSolid[object=cylindrecreux,

    RotX=30,RotZ=-30,

    fillcolor=cyan,incolor=red](4,-3,0)

    \psset{Decran=30,

    viewpoint=30 30 30,

    lightsrc=viewpoint,

    mode=3}

    \psSolid[object=cube,

    lightintensity=3,

    RotX=90](0,3,0)

    \psSolid[object=cube,

    lightintensity=1,

    RotX=90](3,-3,0)

    Si loption [lightsrc=value1 value2 value3] nest pas spcifie, lobjet est uniformment clair.

  • 2.12. TRONQUER LES SOMMETS DUN SOLIDE 35

    x y

    z

    \psSolid[r1=3.5,r0=1,object=tore,ngrid=18 36,fillcolor={[rgb]{.372 .62 .628}}]%

    2.12 Tronquer les sommets dun solideLoption trunc permet de tronquer les sommets soit globalement, soit individuellement. Cette option utilise lar-

    gument trunccoeff (valeur 0,25 par dfaut) qui indique le rapport k utiliser pour la troncature (0< k 0,5). [trunc=all] tronque tous les sommets ; [trunc=0 1 2 3] tronque les sommets [0,1,2 et 3] ;

    \psSolid[object=cube,

    action=draw,RotZ=30,

    trunccoeff=.2,trunc=all,

    ]%

    \psSolid[object=cube,

    RotZ=30,action=draw,

    trunccoeff=.2,

    trunc=0 1 2 3,

    ]%

    2.13 Affiner un solideNous dsignerons par affinage de rapport k lopration qui, pour une face donne de centre G, consiste effectuer

    sur cette face une homothtie de rapport k et de centreG, puis diviser la face originelle en utilisant cette nouvelle face.Par exemple, voici un cube ayant subi un affinage de rapport 0,8 sur sa face suprieure :

  • 36 CHAPITRE 2. LES OPTIONS DE \PSSOLID

    Loption affinage permet daffiner les faces soit globalement, soit individuellement. Cette option utilise largu-ment affinagecoeff (valeur 0,8 par dfaut) qui indique le rapport k utiliser pour laffinage (0< k < 1).

    [affinage=all] affine toutes les faces ; [affinage=0 1 2 3] affine les faces [0,1,2 et 3] ;Lorsquun face se trouve affine, le comportement par dfaut supprime la face centrale obtenue. Toutefois, loption

    affinagerm permet de conserver cette face centrale.Si on conserve la face centrale, elle est par dfaut de la couleur de la face originelle. Loption fcolor permet de

    spcifier une couleur de remplacement.

    \psSolid[object=cube,

    fillcolor=cyan,

    incolor=red,

    hollow,

    affinage=0]

    \psSolid[object=cube,

    fillcolor=cyan,

    affinagecoeff=.5,

    affinagerm,

    fcolor=.5 setfillopacity Yellow,

    hollow,

    affinage=all]

    2.14 Chanfreiner un solide

    \psSolid[object=cube,

    a=5,

    fillcolor=red,

    chanfrein,

    chanfreincoeff=.6,

    ]

    Loption chanfrein permet de chanfreiner un solide. Cette option utilise largument chanfreincoeff (valeur 0,8par dfaut) qui indique le rapport k utiliser (0< k < 1). Ce rapport est celui dune homothtie de cetre le centre de laface considre.

  • 2.15. LOPTION TRANSFORM 37

    \psSolid[object=dodecahedron,

    a=5,

    fillcolor=cyan,

    chanfrein,

    chanfreincoeff=.8,

    ]

    2.15 Loption transform

    Avec loption transform=... , cest une formule de transformation de R3 vers R3 qui va tre applique chaquepoint du solide. Dans ce premier exemple, lobjet qui subira la transformation est un cube. Le cube de rfrence est enjaune, le cube transform en vert et le cube en fil de fer reprsente le cube avant transformation.

    2.15.1 Facteur dchelle identique appliqu aux trois coordonnes

    Le facteur dchelle est pris gal 0.5. On lintroduit soit en dfinissant la variable /Facteur :

    \pstVerb{/Facteur {.5 mulv3d} def}%

    puis en lintroduisant dans loption transform :

    \psSolid[object=cube,a=2,ngrid=3,

    transform=Facteur](2,0,1)%

    soit directement dans le code :

    \psSolid[object=cube,a=2,ngrid=3,

    transform={.5 mulv3d}](2,0,1)%

    Remarque :On vient dutiliser ici un raccourci jps pour dfinir une fonction de de R3 vers R3. Une autre mthodeaurait t dutiliser le code

    \defFunction[algebraic]{matransformation}(x,y,z)

    {.5*x}

    {.5*y}

    {.5*z}

    puis de transmettre dans les options [transform=matransformation] .

  • 38 CHAPITRE 2. LES OPTIONS DE \PSSOLID

    x

    y

    z

    1 \psset{SphericalCoor,viewpoint=20 60 20,lightsrc=10 15 7,Decran=20}

    2 \begin{pspicture}(-5,-5)(6,5)

    3 \psframe(-5,-4)(6,5)

    4 \psSolid[object=grille,base=-4 4 -4 4,fillcolor=red!50]%

    5 \axesIIID(0,0,0)(4,4,4)%

    6 \psSolid[object=cube,fillcolor=yellow!50,

    7 a=2,ngrid=3](-2,0,1)

    8 \psSolid[object=cube,fillcolor=green!50,

    9 a=2,transform={.5 mulv3d},

    10 ngrid=3](2,0,1)

    11 \psSolid[object=cube,

    12 action=draw,

    13 a=2,ngrid=3](2,0,1)

    14 \end{pspicture}

    Le facteur dchelle sapplique aussi aux coordonnes de la position du centre du cube.

    2.15.2 Facteur dchelle diffrent pour les trois coordonnes

    Prenons, par exemple, que lon applique un facteur de 0.75 pour x, 4 pour y et 0.5 pour z, on transforme ainsi uncube en un paralllpipde en utilisant la fonction scaleOpoint3d de la librairie jps.

  • 2.15. LOPTION TRANSFORM 39

    x

    y

    z

    1 \psset{SphericalCoor,viewpoint=20 60 20,lightsrc=10 15 7,Decran=20}

    2 \begin{pspicture}(-5,-5)(6,5)

    3 \psframe(-5,-4)(6,5)

    4 \psSolid[object=grille,base=-4 4 -4 4,fillcolor=red!50]%

    5 \axesIIID(0,0,0)(4,4,4)%

    6 \psSolid[object=cube,

    7 a=2,ngrid=3](-2,0,1)

    8 \psSolid[object=cube,

    9 a=2,transform={.75 4 .5 scaleOpoint3d},

    10 ngrid=3](2,0,1)

    11 \psSolid[object=cube,

    12 action=draw,

    13 a=2,ngrid=3](2,0,1)

    14 \end{pspicture}

    2.15.3 Transformation lie la distance du point lorigine

    Un exemple que lon va appliquer un cube :

    x =0.5

    x2+ y2+ z2 + 1 0.5p3x

    y =0.5

    x2+ y2+ z2 + 1 0.5p3y

    z =0.5

    x2+ y2+ z2 + 1 0.5p3z

  • 40 CHAPITRE 2. LES OPTIONS DE \PSSOLID

    1 \begin{pspicture}(-3,-4)(3,3)

    2 \psset{SphericalCoor,viewpoint=20 60 20,lightsrc=10 15 7,Decran=20}

    3 \pstVerb{

    4 /gro {

    5 4 dict begin

    6 /M defpoint3d

    7 /a .5 def

    8 /b 1 a 3 sqrt mul sub def

    9 /k M norme3d a mul b add def

    10 M k mulv3d

    11 end

    12 } def}%

    13 \psframe*(-3,-4)(3,3)

    14 \psset{linewidth=.02,linecolor=gray}

    15 \psSolid[object=cube,a=3,ngrid=9,

    16 transform=gro]%

    17 \end{pspicture}

    2.15.4 Torsion dune poutre

    Le solide de dpart est un prisme de hauteur 10 cm de 20 tages (ngrid=20 2). chaque tage, on applique unerotation supplmentaire daxeOz et de valeur 10o par exemple. Comme les niveaux sont espacs de 0,5 cm, onmultipliez 20.

  • 2.16. TRACS DINTERSECTIONS PLANES 41

    1 \psset{SphericalCoor,viewpoint=50 50 20,lightsrc=25 37 17,Decran=50,unit=0.75}

    2 \begin{pspicture}(-3,-1)(3.5,10)

    3 \psframe(-3,-1)(3,10)

    4 \psSolid[object=grille,base=-2 2 -2 2,ngrid=8]%

    5 \psSolid[object=prisme,h=10,ngrid=20 2,

    6 base=0.5 0 0.5 0.5 0 0.5 -0.5 0.5 -0.5 0 -0.5 -0.5 0 -0.5 0.5 -0.5]%

    7 \end{pspicture}

    8 \begin{pspicture}(-3.5,-1)(3,10)

    9 \psframe(-3,-1)(3,10)

    10 \psSolid[object=grille,base=-2 2 -2 2,ngrid=8]%

    11 \pstVerb{

    12 /torsion {

    13 2 dict begin

    14 /M defpoint3d % on rcupre les coordonnes

    15 M /z exch def pop pop

    16 % on tourne de 10 degrs chaque niveau

    17 M 0 0 z 20 mul rotateOpoint3d

    18 end} def}%

    19 \psSolid[object=prisme,h=10,ngrid=20 2,

    20 base=0.5 0 0.5 0.5 0 0.5 -0.5 0.5 -0.5 0 -0.5 -0.5 0 -0.5 0.5 -0.5,

    21 transform=torsion]%

    22 \end{pspicture}

    2.16 Tracs dintersections planesPour chaque objet de type solid, il est possible de tracer lintersection du solide considr avec un ou plusieurs plans.Largument numrique [intersectiontype=k] (valeur 1 par dfaut) dtermine sil y a ou non demande de

    trac dintersection. Positionn 0, il y a trac des intersections.Restent 3 paramtres rgler : [intersectionplan={eq1 ... eqn}] dfinit la liste des quations ei des plans de coupe. Les ei peuvent tre

    galement des objets de type plan. [intersectionlinewidth=w1 ... wn] dfinit la liste des paisseurs en picas wi pour chacune des coupes.

    [intersectioncolor=s t r1 ... s t rn] dfinit la liste des couleurs des diffrents traits de coupe.

    \psSolid[object=cube,

  • 42 CHAPITRE 2. LES OPTIONS DE \PSSOLID

    intersectiontype=0,

    intersectionplan={[1 0 .5 2] [1 0 .5 -1]},

    intersectionlinewidth=1 2,

    intersectioncolor=(bleu) (rouge),

    RotX=20,RotY=90,RotZ=30,

    a=6,

    action=draw*,

    ]

  • Chapitre 3

    Utilisation de fichiers externes

    Il peut tre parfois utile dutiliser des fichiers externes, que ce soit en lecture ou en criture. Par exemple, lorsque lona construit des solides ncessitant de longs temps de calcul et que lon veut tester diffrents points de vues ou diffrentescouleurs, il peut tre intressant de sauvegarder ces solides pour les relire ensuite, ce qui vitera de les recalculer. Enparticulier, cette technique est souvent utilis pour construire des animations. On peut aussi avoir envie dexporter unsolide pour le rutiliser avec un autre logiciel.

    Pour pst-solides3d, le choix a t fait de dlguer toutes les procdures de lecture/criture linterprteur postscript(et non pas TEX ou LATEX). En consquence, ce nest pas la compilation LATEX qui provoquera lexcution dun ordrede lecture/criture, mais la visualisation du fichier postscript produit.

    En rgle gnrale, la lecture de fichiers externes par un interprteur postscript ne pose pas de problme (sil ny apas franchissement de rpertoire). Pour lcriture en revanche, cela peut poser des problmes de scurit et il nest pasrare que le visualisateur postscript interdise lcriture par dfaut. Il faut alors le configurer pour autoriser cette criture.

    Par dfaut, sous Windows et Linux, la protection des fichiers du disque dur est active et ne permet donc paslcriture sur le disque. Pour dsactiver cette protection, tout au moins temporairement, voici les deux procdurescorrespondantes :Linux : le conseil de Jean-Michel Sarlat : le plus simple est donc dutiliser ghostscript directement, en console.

    Comme il ny a rien attendre comme image :$> gs -dNOSAFER monfichier.ps quit.ps

    Windows : dans le menu Options, loption Protection des chiers ne doit pas tre coche.

    3.1 Fichiers .dat (spcifique pst-solides3d)Dans pst-solides3d, la structure de donnes utilise pour un solide comporte 4 champs. Elle peut tre stocke dans

    un ensemble de 4 fichiers .dat.

    3.1.1 criture de fichiers .dat

    On utilise laction writesolid dans \psSolid, et on utilise loption file pour spcifier le nom du fichier.Par exemple, considrons le code ci-dessous :

    \psSolid[object=tore,

    file=montore,

    action=writesolid]

    La chane de commandes LaTeX->dvips->GSview (Windows)ou gv (Linux) permet de compiler, puis detransformer en postscript pour enfin visualiser.

    Cette dernire opration va crer 4 fichiers : montore-sommets.dat -> la liste des sommets ; montore-faces.dat -> la liste des faces ; montore-couleurs.dat -> les couleurs des faces ; montore-io.dat -> les bornes des indices des faces externes et internes.

    43

  • 44 CHAPITRE 3. UTILISATION DE FICHIERS EXTERNES

    3.1.2 Lecture de fichiers .dat

    On utilise lobjet datfile de \psSolid, avec largument file pour spcifier le nom du fichier. Ainsi le code

    \psSolid[object=datfile, file=montore]

    va permettre dutiliser lobjet stock dans les fichiers .dat crs au paragraphe prcdent.

    3.2 Fichiers .objNous nutilisons quune forme simplifie du format obj. En particulier, les fichiers ne doivent comporter aucun

    caractre # (caractre de commentaire dans ce format).Ce format nutilise quun seul fichier, et permet de spcifier sommets et faces.

    3.2.1 criture de fichiers .obj

    On utilise laction writeobj dans \psSolid, et on utilise loption file pour spcifier le nom du fichier.Par exemple, le code ci-dessous :

    \psSolid[object=tore,

    file=montore,

    action=writeobj]

    produira le fichier montore.obj (aprs compilation et visualisation du .ps produit).

    3.2.2 Lecture de fichiers .obj

    On utilise lobjet objfile de \psSolid, avec largument file pour spcifier le nom du fichier. Ainsi le code

    \psSolid[object=objfile, file=montore]

    va permettre dutiliser lobjet stock dans les fichiers .obj crs au paragraphe prcdent.

    3.3 Fichiers .offNous nutilisons quune forme simplifie du format off. En particulier, les fichiers ne doivent comporter que des

    entres v ou f.Ce format nutilise quun seul fichier, et permet de spcifier sommets et faces.

    3.3.1 criture de fichiers .off

    On utilise laction writeobj dans \psSolid, et on utilise loption file pour spcifier le nom du fichier.Par exemple, le code ci-dessous :

    \psSolid[object=tore,

    file=montore,

    action=writeoff]

    produira le fichier montore.off (aprs compilation et visualisation du .ps produit).

    3.3.2 Lecture de fichiers .off

    On utilise lobjet offfile de \psSolid, avec largument file pour spcifier le nom du fichier. Ainsi le code

    \psSolid[object=offfile, file=montore]

    va permettre dutiliser lobjet stock dans les fichiers .off crs au paragraphe prcdent.

  • Chapitre 4

    Quelques objets spcifiques

    4.1 La grille

    Lobjet grille permet dobtenir un solide plan. Le paramtre base=xmin xmax ymin ymax] permet de

    spcifier la taille de la grille.

    x y

    z\psSolid[object=grille,

    base=0 4 -3 3,

    linecolor=gray](0,0,0)

    Le paramtre [ngrid=n1 n2] permet de spcifier le maillage de la grille. Si n2 est absent, on considre que n2 = n1.

    Si n1 est entier, il reprsente le nombre de mailles sur laxe Ox. Sil est rel, il reprsente le pas de maillage sur laxeOx. Par exemple, le nombre cod 1 est entier, alors que celui cod 1. est rel (noter le point).

    x y

    z\psSolid[object=grille,

    ngrid=1,

    base=0 4 -3 3,

    linecolor=gray](0,0,0)

    x y

    z\psSolid[object=grille,

    ngrid=1. 1,

    base=0 4 -3 3,

    linecolor=gray](0,0,0)

    45

  • 46 CHAPITRE 4. QUELQUES OBJETS SPCIFIQUES

    4.2 Lobjet plan

    4.2.1 Prsentation : type plan et type solidLe statut de lobjet plan est tout fait particulier dans pst-solides3d. En effet, tous les objets vus jusqu pr-

    sents ont une structure commune : ils sont de type solid. Autrement dit ils sont entirement dfinis par une liste desommets, de faces et de couleurs. Or pour de nombreuses applications, il est ncessaire davoir des renseignementscomplmentaires pour un plan : une origine, une orientation, une base de rfrence, etc...

    Pour pouvoir rpondre ces exigences, il a t cr une autre structure de donnes, dite de type plan, qui permetde stocker toutes les informations ncessaires. Toutes les manipulations de plan vont transiter par un tel objet. Ce nestquau moment de la reprsentation que lobjet de type plan sera converti en un objet de type solid reprsentable par lamacro \psSolid.

    Un objet de type plan permet donc de dcrire une portion de plan affine orient. Pour une dfinition complte duntel objet, il nous faut une origine I , une base vectorielle (~u, ~v) de ce plan, une tendue sur laxe (I ,~u) et une tenduesur laxe (I , ~v). De plus, on pourra spcifier le maillage souhait, autrement dit le nombre de facettes utilises pourreprsenter cette portion de plan affine lors de la transformation en objet de type solid.

    Ce type dobjet peut tre utilis pour dfinir des sections planes, et il est obligatoire pour dfinir un plan de projec-tion.

    Son utilisation est transparente pour lutilisateur PSTricks. La seule chose savoir, cest que lorsque lon manipuleun [object=plan] avec la macro \psSolid, on manipule en fait deux objets en mme temps : lun de type plan etlautre de type solid. Et lorsque lon demande une sauvegarde de cet objet (voir le chapitre Utilisation avance) sousle nom mon pl an par exemple avec loption [name=monplan], ce sont en fait 2 sauvegardes qui sont effectues. Lapremire, sous le nom mon pl an, est lobjet de type plan, et la deuxime, sous le nom mon pl an_s , est lobjet de typesolid.

    4.2.2 Dfinir un plan orient

    Pour crer un tel objet, on utilise [object=plan] qui utilise plusieurs arguments :

    [definition=...] qui permet de spcifier la mthode choisie pour dfinir le plan

    [args=...] qui permet de spcifier les arguments ncessaires la mthode choisie prcdemment

    [bases=xmin xmax ymin ymax] qui permet de spcifier ltendue sur chacun des axes.

    [phi] (valeur 0 par dfaut) qui spcifie langle de rotation (en degrs) du plan autour de sa normale aprs sadfinition premire.

    4.2.3 Options spcifiques

    Lobjet plan possde plusieurs options spcifiques daffichage : [planmarks] qui projette limpression des axes

    et graduations, [plangrid] qui projette limpression dun quadrillage, [showbase] qui projette limpression des

    vecteurs de base du plan, et [showBase] (noter la majuscule) qui projette limpression des vecteurs de base du plan etqui dessine le vecteur normal associ.

    Ces options sont valables quelque soit le mode de dfinition choisi pour le plan.

  • 4.2. LOBJET PLAN 47

    Ces options peuvent tre utilises, mme si le plan nest pas reprsent.

    4.2.4 Dfinir un plan partir dune quation cartsienne

    On appelle quation cartsienne dun plan affine une quation du type

    ax + b y + c z + d = 0

    La donne des coefficients a, b , c et d permet de dfinir un plan affine.

    Utilisation avec lorientation et lorigine par dfaut

    Pour dfinir un plan affine, on peut utiliser [definition=equation] , et [args={[a b c d]}] . Lorientationet lorigine du plan affine sont alors choisis par le package.

    Par exemple, le quadruplet (a, b , c ,d ) = (0,0,1,0) dsigne le plan dquation z = 0 :

    x

    y

    z \psSolid[object=plan,definition=equation,

    args={[0 0 1 0]},

    fillcolor=Aquamarine,

    planmarks,

    base=-2.2 2.2 -3.2 3.2,

    showbase,

    ]

    Le paramtre [base=xmin xmax ymin ymax] permet de spcifier ltendue sur chacun des axes.

    Spcification de lorigine

    Le paramtre [origine=x0 y0 z0] permet de spcifier lorigine du plan affine. Si le point (x0, y0, z0) propos ne

    vrifie pas lquation du plan, alors on ne tient pas compte de cette origine.Par exemple, voici une reprsentation du plan dquation z = 0 pour laquelle on a spcifi (1,2,0) comme origine :

    x

    y

    z \psSolid[object=plan,definition=equation,

    args={[0 0 1 0]},

    origine=1 2 0,

    fillcolor=Aquamarine,

    base=-2.2 2.2 -3.2 3.2,

    planmarks,

  • 48 CHAPITRE 4. QUELQUES OBJETS SPCIFIQUES

    ]

    Spcification de lorientation

    Si lorientation propose ne convient pas, on peut spcifier un angle de rotation (en degrs) autour de la normaleavec la syntaxe [args={[a b c d] }] .

    x

    y

    z \psSolid[object=plan,definition=equation,

    args={[0 0 1 0] 90},

    fillcolor=Aquamarine,

    base=-2.2 2.2 -3.2 3.2,

    planmarks,

    ]

    4.2.5 Dfinir un plan partir dun vecteur normal et dun point

    Il est possible de dfinir un plan affine partir dun point et dun vecteur normal. On utilise pour cela le paramtre[definition=normalpoint] .

    On peut ensuite prciser ou non lorientation.

    Mthode 1 : Sans prciser lorientation

    On utilise [args={x0 y0 z0 [a b c]}] o (x0, y0, z0) est lorigine du plan affine, et (a, b , c) un vecteur normal

    ce plan.

    x

    y

    z \psSolid[object=plan,definition=normalpoint,

    args={0 0 0 [0 0 1]},

    fillcolor=Aquamarine,

    planmarks,

    base=-2.2 2.2 -3.2 3.2,

    showbase,

    ]

    Mthode 2 : prciser un angle de rotation

    On utilise [args={x0 y0 z0 [a b c ]}] o (x0, y0, z0) est lorigine du plan affine, (a, b , c) un vecteur normal

    ce plan, et langle de rotation (en degrs) autour de laxe normal.

  • 4.2. LOBJET PLAN 49

    x

    y

    z \psSolid[object=plan,definition=normalpoint,

    args={0 0 0 [0 0 1 45]},

    fillcolor=Aquamarine,

    planmarks,

    base=-2.2 2.2 -3.2 3.2,

    showbase,

    ]

    Mthode 3 : prciser le premier vecteur de la base

    On utilise [args={x0 y0 z0 [ux uy uz a b c ]}] o (x0, y0, z0) est lorigine du plan affine, (a, b , c) un vecteur

    normal ce plan, et (ux , uy , uz ) le premier vecteur dune base de ce plan.

    x

    y

    z \psSolid[object=plan,definition=normalpoint,

    args={0 0 0 [1 1 0 0 0 1]},

    fillcolor=Aquamarine,

    planmarks,

    base=-2.2 2.2 -3.2 3.2,

    showbase,

    ]

    Mthode 4 : prciser le premier vecteur de la base et un angle de rotation

    On utilise [args={x0 y0 z0 [ux uy uz a b c ]}] o (x0, y0, z0) est lorigine du plan affine, (a, b , c) un vec-

    teur normal ce plan, et (ux , uy , uz ) le premier vecteur dune base de ce plan, auquel on fait subir une rotation de (endegrs) autour de laxe normal.

    x

    y

    z \psSolid[object=plan,definition=normalpoint,

    args={0 0 0 [1 1 0 0 0 1 45]},

    fillcolor=Aquamarine,

    planmarks,

    base=-2.2 2.2 -3.2 3.2,

    showbase,

    ]

    4.2.6 Dfinition dun plan partir dune face de solide

    On utilise [definition=solidface] avec les arguments [args=name i] o name est un nom dsignant lesolide et i est lindice de la face considre. On prend pour origine le centre de la face considre.

  • 50 CHAPITRE 4. QUELQUES OBJETS SPCIFIQUES

    Dans lexemple ci-dessous, on dfinit le plan par la face dindice 0 du cube nomm A.

    \psset{solidmemory}

    \psSolid[object=cube,a=2,fontsize=20,numfaces=all,

    name=A]

    \psSolid[object=plan,

    definition=solidface,

    args=A 0,

    showBase,

    ]

    Si lutilisateur prcise les coordonnes (x, y, z) dans la macro \psSolid[...](x, y, z), alors le plan construit estparallle la face dindice i du solide name , et il passe par le point (x, y, z) qui est pris pour origine.

    \psset{solidmemory}

    \psSolid[object=cube,a=2,fontsize=20,numfaces=all,

    name=A]

    \psSolid[object=plan,

    definition=solidface,

    args=A 0,

    showBase,

    ](0,0,2)

    4.3 Vecteurs

    4.3.1 Dfinition partir des coordonnes

    Lobjet vecteur permet de dfinir un vecteur. Sous sa forme la plus simple, on utilise largument [args=x y z]

    pour en spcifier les coordonnes.

    \psSolid[object=vecteur,

    args=0 0 1,

    linecolor=yellow]%

    \psSolid[object=vecteur,

    args=1 0 0,

    linecolor=red]

    \psSolid[object=vecteur,

    args=0 0 1,

    linecolor=blue](1,0,0)

    4.3.2 Dfinition partir de 2 points

    On peut galement dfinir un vecteur par la donne de 2 points A et B de R3. On utilise alors les arguments[definition=vecteur3d] et [args=xA yA zA xB yB zB] o (xA, yA, zA) et (xB , yB , zB ) sont les coordonnes res-

    pectives des points A et BSi les points A et B ont t pralablement dfinis, alors on peut utiliser des variables nommes : [args=A B] .

  • 4.4. POINT 51

    \psSolid[object=vecteur,

    definition=vecteur3d,

    args=0 0 1 1 1 1]%

    4.3.3 Autres modes de dfinition

    Il existe dautres possibilits pour dfinir un vecteur. Voici une liste des dfinitions possibles avec les argumentscorrespondant :

    [definition=addv3d] ; args= ~u ~v. addition de 2 vecteurs.

    [definition=subv3d] ; args= ~u ~v. diffrence de 2 vecteurs.

    [definition=mulv3d] ; args= ~u . multiplication dun vecteur par un rel.

    [definition=vectprod3d] ; args= ~u ~v . produit vectoriel de 2 vecteurs.

    [definition=normalize3d] ; args= ~u. Renvoie le vecteur ~u1~u .

    4.4 Point

    4.4.1 Dfinition partir des coordonnes

    Lobjet point permet de dfinir un point. Sous sa forme la plus simple, on utilise largument [args=x y z]

    pour en spcifier les coordonnes. Si on a prcdemment nommM un point (x, y, z) (voir chapitreUtilisation avance),on peut utiliser largument [args=M] .

    4.4.2 Autres modes de dfinition

    Il existe dautres possibilits pour dfinir un point. Voici une liste des dfinitions possibles avec les arguments cor-respondant :

    [definition=solidgetsommet] ; args= s ol ik k. Le sommet dindice k du solid s ol id .

    [definition=solidcentreface] ; args= s ol ik k. Le centre de la face dindice k du solid s ol id .

    [definition=isobarycentre3d] args= {[ A0 . . . An ]} le barycentre du systme [(A0, 1); . . . ; (An , 1)]

    [definition=barycentre3d] args= {[ A a B b ]} le barycentre du systme [(A,a); (B , b )]

    [definition=hompoint3d] args= M A limage de M par lhomothtie de centre A et de rapport

    [definition=sympoint3d] args= M A limage de M par la symtrie de centre A

    [definition=translatepoint3d] args= M u limage de M par la translation de vecteur ~u

    [definition=scaleOpoint3d] args= x y z k1 k2 k3 opre une dilatation des coordonnes du pointM (x, y, z) sur les axes Ox, Oy et Oz suivant les facteurs k1, k2 et k3

    [definition=rotateOpoint3d] args= M x y z limage de M par les rotations successives de centre O etdangles respectifs x y z sur les axes Ox, Oy, Oz

    [definition=orthoprojplane3d] args= M A ~v Le projet du point M sur le plan P dfini par le point A etle vecteur ~v, normal P .

    [definition=milieu3d] args= AB Le milieu de [AB]

  • 52 CHAPITRE 4. QUELQUES OBJETS SPCIFIQUES

    [definition=addv3d] args= A u Le point B tel queAB = ~u

    4.5 Les godes et leurs duales

    4.5.1 Prsentation mathmatique

    Dexcellentes tudes sur les godes et leurs duales sont disponibles sur les sites suivants :http://fr.wikipedia.org/wiki/G%C3%A9ode

    Le paramtrage dune gode est fidle aux indications de la page :http://hypo.ge-dip.etat-ge.ch/www/math/html/amch104.html

    On peut dfinir une gode partir de deux paramtres : un numro N indiquant le type de polydre initial (N = 3 pourle ttradre, N = 4 pour loctadre et N = 5 pour licosadre) et un nombre n indiquant le nombre de divisions le long delarte.

    Larticle Indexing the Sphere with the Hierarchical Triangular Mesh dcrit une mthode permettant dobtenir unereprsentation des godes :

    http://research.microsoft.com/research/pubs/view.aspx?msr_tr_id=MSR-TR-2005-123

    4.5.2 Construction avec pst-solides3d

    Deux approches sont possibles pour construire une gode ou sa duale : soit via \codejps, soit en utilisant les objetsde \psSolid.

    Pour une gode, les codes

    \codejps{N n newgeode drawsolid**}

    et

    \psSolid[object=geode,ngrid=N n]

    sont quivalents. Et pour sa duale, les codes Pour une gode, les codes

    \codejps{N n newdualgeode drawsolid**}

    et

    \psSolid[object=geode,dualreg,ngrid=N n]

    sont quivalents.

    4.5.3 Quelques exemples de godes et de duales

  • 4.5. LES GODES ET LEURS DUALES 53

    N=5 n=0 N=5 n=0

    1 \psset{SphericalCoor=true,viewpoint=50 -20 30,Decran=100}

    2 \begin{pspicture}(-3,-3)(3,3)

    3 \psframe(-3,-3)(3,3)

    4 \psSolid[object=geode,

    5 ngrid=5 0]

    6 %\codejps{5 0 newgeode drawsolid**}

    7 \psframe*(-2,-2.8)(2,-2.2)

    8 \rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=0}}}

    9 \end{pspicture}

    10 \hfill

    11 \begin{pspicture}(-3,-3)(3,3)

    12 \psframe(-3,-3)(3,3)

    13 \psSolid[object=geode,

    14 dualreg,

    15 ngrid=5 0]

    16 %\codejps{5 0 newdualgeode drawsolid**}

    17 \psframe*(-2,-2.8)(2,-2.2)

    18 \rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=0}}}

    19 \end{pspicture}

  • 54 CHAPITRE 4. QUELQUES OBJETS SPCIFIQUES

    N=5 n=1 N=5 n=1

    1 \psset{SphericalCoor=true,viewpoint=50 -20 30,Decran=100}

    2 \begin{pspicture}(-3,-3)(3,3)

    3 \psframe(-3,-3)(3,3)

    4 \psSolid[object=geode,

    5 ngrid=5 1]

    6 %\codejps{5 1 newgeode drawsolid**}

    7 \psframe*(-2,-2.8)(2,-2.2)

    8 \rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=1}}}

    9 \end{pspicture}

    10 \hfill

    11 \begin{pspicture}(-3,-3)(3,3)

    12 \psframe(-3,-3)(3,3)

    13 \psSolid[object=geode,

    14 dualre