Changeset 34
- Timestamp:
- 06/03/08 15:40:56 (7 months ago)
- Files:
-
- trunk/doc/par-plan.tex (modified) (10 diffs)
- trunk/pst-solides3d.tex (modified) (4 diffs)
- trunk/solides.pro (modified) (6 diffs)
- trunk/tests/test_11.tex (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/doc/par-plan.tex
r30 r34 1 \section {L e plan}1 \section {L'objet \texttt{plan}} 2 2 3 3 L'objet \verb+plan+ est en fait une portion de plan affine 4 4 orienté. Pour une définition complète d'un tel solide, il nous faut 5 une origine $I$, une base vectorielle $( I,\vec u, \vec v)$ de ce5 une origine $I$, une base vectorielle $(\vec u, \vec v)$ de ce 6 6 plan, une étendue sur l'axe $(I, \vec u)$ et une étendue sur l'axe 7 7 $(I, \vec v)$. … … 18 18 spécifier la méthode choisie, et le paramètre \Cadre{[args=...]} 19 19 permet de préciser les arguments. 20 21 \subsection {Options spécifiques} 22 23 L'objet \verb+plan+ possède plusieurs options spécifiques~: 24 \Cadre{[planmarks]} qui projette l'impression des axes et graduations, 25 \Cadre{[plangrid]} qui projette l'impression d'un quadrillage, 26 \Cadre{[showbase]} qui projette l'impression des vecteurs de base du 27 plan, et 28 \Cadre{[showBase]} (noter la majuscule) qui projette l'impression des 29 vecteurs de base du plan et qui dessine le vecteur normal associé. 30 31 Ces options sont valables quelque soit le mode de définition choisi 32 pour le plan. 33 34 \begin{center} 35 \psset{unit=0.4} 36 \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10} 37 \begin{pspicture*}(-5,-4)(6,4) 38 \psframe(-5,-4)(5,3) 39 \psSolid[object=plan, 40 definition=equation, 41 args={[0 0 1 0]}, 42 fillcolor=Aquamarine, 43 base=-2.2 2.2 -3.2 3.2, 44 ] 45 \end{pspicture*} 46 %% 47 \psset{unit=1} 48 \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10} 49 \begin{pspicture*}(-5,-4)(6,4) 50 \psframe(-5,-4)(5,3) 51 \psSolid[object=plan, 52 definition=equation, 53 args={[0 0 1 0]}, 54 fillcolor=Aquamarine, 55 base=-2.2 2.2 -3.2 3.2, 56 planmarks, 57 ] 58 \end{pspicture*} 59 %% 60 \psset{unit=1} 61 \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10} 62 \begin{pspicture*}(-5,-4)(6,4) 63 \psframe(-5,-4)(5,3) 64 \psSolid[object=plan, 65 definition=equation, 66 args={[0 0 1 0]}, 67 fillcolor=Aquamarine, 68 base=-2.2 2.2 -3.2 3.2, 69 plangrid, 70 ] 71 \end{pspicture*} 72 %% 73 \psset{unit=1} 74 \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10} 75 \begin{pspicture*}(-5,-4)(6,4) 76 \psframe(-5,-4)(5,3) 77 \psSolid[object=plan, 78 definition=equation, 79 args={[0 0 1 0]}, 80 fillcolor=Aquamarine, 81 base=-2.2 2.2 -3.2 3.2, 82 showbase, 83 ] 84 \end{pspicture*} 85 %% 86 \psset{unit=1} 87 \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10} 88 \begin{pspicture*}(-5,-4)(6,4) 89 \psframe(-5,-4)(5,3) 90 \psSolid[object=plan, 91 definition=equation, 92 args={[0 0 1 0]}, 93 fillcolor=Aquamarine, 94 base=-2.2 2.2 -3.2 3.2, 95 showBase, 96 ] 97 \end{pspicture*} 98 %% 99 \psset{unit=1} 100 \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10} 101 \begin{pspicture*}(-5,-4)(6,4) 102 \psframe(-5,-4)(5,3) 103 \psSolid[object=plan, 104 definition=equation, 105 args={[0 0 1 0]}, 106 fillcolor=Aquamarine, 107 base=-2.2 2.2 -3.2 3.2, 108 plangrid, 109 showBase, 110 action=none 111 ] 112 \end{pspicture*} 113 \end{center} 114 115 Ces options peuvent être utilisées, même si le plan n'est pas 116 représenté. 20 117 21 118 \subsection {Définir un plan à partir d'une équation cartésienne} … … 38 135 Par exemple, le quadruplet $(a, b, c, d) = (0, 0, 1, 0)$ désigne le 39 136 plan d'équation $z=0$~: 40 \begin{center} 41 \psset{unit=0.75} 42 \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10} 43 \begin{pspicture*}(-5,-4)(6,4) 44 \psframe(-5,-4)(6,4) 45 \psSolid[object=plan, 46 definition=equation, 47 args={[0 0 1 0]}, 48 fillcolor=yellow, 49 base=-2.2 2.2 -3.2 3.2, 137 \newpage 138 \begin{multicols}{2} 139 %\begin{center} 140 \psset{unit=0.75} 141 \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10} 142 \begin{pspicture*}(-5,-4)(6,4) 143 \psframe(-5,-4)(6,4) 144 \psSolid[object=plan, 145 definition=equation, 146 args={[0 0 1 0]}, 147 fillcolor=Aquamarine, 148 planmarks, 149 base=-2.2 2.2 -3.2 3.2, 150 showbase, 50 151 ] 51 152 \axesIIID(0,0,0)(2.2,3.2,4) 52 153 \end{pspicture*} 53 \end{center} 54 \begin{verbatim} 55 \psSolid[object=plan, 56 definition=equation, 57 args={[0 0 1 0]}, 58 fillcolor=yellow, 59 base=-2.2 2.2 -3.2 3.2, 60 ] 61 \end{verbatim} 154 %\end{center} 155 156 \columnbreak 157 158 \begin{verbatim} 159 \psSolid[object=plan, 160 definition=equation, 161 args={[0 0 1 0]}, 162 fillcolor=Aquamarine, 163 planmarks, 164 base=-2.2 2.2 -3.2 3.2, 165 showbase, 166 ] 167 \end{verbatim} 168 \end{multicols} 62 169 63 170 Le paramètre \Cadre{[base=xmin xmax ymin ymax]} permet de spécifier … … 68 175 Le paramètre \Cadre{[origine=$x_0$ $y_0$ $z_0$]} permet de spécifier 69 176 l'origine du plan affine. Si le point $(x_0, y_0, z_0)$ proposé ne 70 vérifie pas l'équation du plan, alors on ne tien pas compte de cette177 vérifie pas l'équation du plan, alors on ne tient pas compte de cette 71 178 origine. 72 179 73 180 Par exemple, voici une représentation du plan d'équation $z=0$ pour 74 laquelle on a spécifié $(0, 2, 0)$ comme origine~: 75 \begin{center} 76 \psset{unit=0.75} 77 \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10} 78 \begin{pspicture*}(-5,-4)(6,4) 79 \psframe(-5,-4)(6,4) 80 \psSolid[object=plan, 81 definition=equation, 82 args={[0 0 1 0]}, 83 fillcolor=yellow, 84 origine=0 2 0, 85 base=-2.2 2.2 -3.2 3.2, 181 laquelle on a spécifié $(1, 2, 0)$ comme origine~: 182 183 \begin{multicols}{2} 184 \psset{unit=0.75} 185 \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10} 186 \begin{pspicture*}(-4,-5.5)(6,4) 187 \psframe(-4,-5.5)(6,4) 188 \psSolid[object=plan, 189 definition=equation, 190 args={[0 0 1 0]}, 191 fillcolor=Aquamarine, 192 origine=1 2 0, 193 base=-2.2 2.2 -3.2 3.2, 194 planmarks, 86 195 ] 87 196 \axesIIID(0,0,0)(2.2,3.2,4) 88 197 \end{pspicture*} 89 \end{center} 90 \begin{verbatim} 91 \psSolid[object=plan, 92 definition=equation, 93 args={[0 0 1 0]}, 94 origine=0 2 0, 95 fillcolor=yellow, 96 base=-2.2 2.2 -3.2 3.2, 97 ] 98 \end{verbatim} 99 198 199 \columnbreak 200 201 \begin{verbatim} 202 \psSolid[object=plan, 203 definition=equation, 204 args={[0 0 1 0]}, 205 origine=1 2 0, 206 fillcolor=Aquamarine, 207 base=-2.2 2.2 -3.2 3.2, 208 planmarks, 209 ] 210 \end{verbatim} 211 \end{multicols} 100 212 \subsubsection {Spécification de l'orientation} 101 213 … … 104 216 \Cadre{[args=\{[a b c d] $\alpha $\}]}. 105 217 106 \begin{center} 218 \begin{multicols}{2} 219 107 220 \psset{unit=0.75} 108 221 \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10} … … 112 225 definition=equation, 113 226 args={[0 0 1 0] 90}, 114 fillcolor=yellow, 115 base=-2.2 2.2 -3.2 3.2, 227 fillcolor=Aquamarine, 228 base=-2.2 2.2 -3.2 3.2, 229 planmarks, 116 230 ] 117 231 \axesIIID(0,0,0)(3.2,2.2,4) 118 232 \end{pspicture*} 119 \end{center} 120 \begin{verbatim} 121 \psSolid[object=plan, 122 definition=equation, 123 args={[0 0 1 0] 90}, 124 fillcolor=yellow, 125 base=-2.2 2.2 -3.2 3.2, 126 ] 127 \end{verbatim} 233 234 \columnbreak 235 \begin{verbatim} 236 \psSolid[object=plan, 237 definition=equation, 238 args={[0 0 1 0] 90}, 239 fillcolor=Aquamarine, 240 base=-2.2 2.2 -3.2 3.2, 241 planmarks, 242 ] 243 \end{verbatim} 244 \end{multicols} 128 245 129 246 \subsection {Définir un plan à partir d'un vecteur normal et d'un point} … … 139 256 z_0)$ est l'origine du plan affine, et $(a, b, c)$ un vecteur normal à 140 257 ce plan. 258 259 \begin{multicols}{2} 260 261 \psset{unit=0.75} 262 \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10} 263 \begin{pspicture*}(-5,-4)(6,4) 264 \psframe(-5,-4)(6,4) 265 \psSolid[object=plan, 266 definition=normalpoint, 267 args={0 0 0 [0 0 1]}, 268 fillcolor=Aquamarine, 269 planmarks, 270 base=-2.2 2.2 -3.2 3.2, 271 showbase, 272 ] 273 \axesIIID(0,0,0)(2.2,3.2,4) 274 \end{pspicture*} 275 276 \columnbreak 277 278 \begin{verbatim} 279 \psSolid[object=plan, 280 definition=normalpoint, 281 args={0 0 0 [0 0 1]}, 282 fillcolor=Aquamarine, 283 planmarks, 284 base=-2.2 2.2 -3.2 3.2, 285 showbase, 286 ] 287 \end{verbatim} 288 \end{multicols} 141 289 142 290 \subsubsection {Méthode 2~: préciser un angle de rotation} … … 147 295 degrés) autour de l'axe normal. 148 296 297 \begin{multicols}{2} 298 299 \psset{unit=0.75} 300 \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10} 301 \begin{pspicture*}(-5,-4)(6,4) 302 \psframe(-5,-4)(6,4) 303 \psSolid[object=plan, 304 definition=normalpoint, 305 args={0 0 0 [0 0 1 45]}, 306 fillcolor=Aquamarine, 307 planmarks, 308 base=-2.2 2.2 -3.2 3.2, 309 showbase, 310 ] 311 \axesIIID(0,0,0)(2.2,3.2,4) 312 \end{pspicture*} 313 314 \columnbreak 315 316 \begin{verbatim} 317 \psSolid[object=plan, 318 definition=normalpoint, 319 args={0 0 0 [0 0 1 45]}, 320 fillcolor=Aquamarine, 321 planmarks, 322 base=-2.2 2.2 -3.2 3.2, 323 showbase, 324 ] 325 \end{verbatim} 326 \end{multicols} 327 149 328 \subsubsection {Méthode 3~: préciser le premier vecteur de la base} 150 329 … … 153 332 $(a, b, c)$ un vecteur normal à ce plan, et $(u_x, u_y, u_z)$ le 154 333 premier vecteur d'une base de ce plan. 334 335 \begin{multicols}{2} 336 337 \psset{unit=0.75} 338 \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10} 339 \begin{pspicture*}(-5,-4)(6,4) 340 \psframe(-5,-4)(6,4) 341 \psSolid[object=plan, 342 definition=normalpoint, 343 args={0 0 0 [1 1 0 0 0 1]}, 344 fillcolor=Aquamarine, 345 planmarks, 346 base=-2.2 2.2 -3.2 3.2, 347 showbase, 348 ] 349 \axesIIID(0,0,0)(2.2,3.2,4) 350 \end{pspicture*} 351 352 \columnbreak 353 354 \begin{verbatim} 355 \psSolid[object=plan, 356 definition=normalpoint, 357 args={0 0 0 [1 1 0 0 0 1]}, 358 fillcolor=Aquamarine, 359 planmarks, 360 base=-2.2 2.2 -3.2 3.2, 361 showbase, 362 ] 363 \end{verbatim} 364 \end{multicols} 155 365 156 366 \subsubsection {Méthode 4~: préciser le premier vecteur de la base et … … 163 373 rotation de $\alpha $ (en degrés) autour de l'axe normal. 164 374 165 \subsection {Options spécifiques} 166 167 Graduations, impression d'un quadrillage, réglage des pas pour tout ça 375 \begin{multicols}{2} 376 377 \psset{unit=0.75} 378 \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10} 379 \begin{pspicture*}(-5,-4)(6,4) 380 \psframe(-5,-4)(6,4) 381 \psSolid[object=plan, 382 definition=normalpoint, 383 args={0 0 0 [1 1 0 0 0 1 45]}, 384 fillcolor=Aquamarine, 385 planmarks, 386 base=-2.2 2.2 -3.2 3.2, 387 showbase, 388 ] 389 \axesIIID(0,0,0)(2.2,3.2,4) 390 \end{pspicture*} 391 392 \columnbreak 393 394 \begin{verbatim} 395 \psSolid[object=plan, 396 definition=normalpoint, 397 args={0 0 0 [1 1 0 0 0 1 45]}, 398 fillcolor=Aquamarine, 399 planmarks, 400 base=-2.2 2.2 -3.2 3.2, 401 showbase, 402 ] 403 \end{verbatim} 404 \end{multicols} 405 406 \section {Définir un plan à partir d'un objet de type plan} 407 408 On utilise \Cadre{[definition=plantype]} et 409 \Cadre{[args=\textsl{name}]} où \textsl {name} désigne le nom de 410 l'objet de type \textsl{plan} 411 412 \begin{multicols}{2} 413 \psset{unit=0.75} 414 \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10} 415 \begin{pspicture*}(-5,-4)(6,4) 416 \psframe(-5,-4)(6,4) 417 \psset{solidmemory} 418 \psSolid[object=plantype, 419 definition=equation, 420 args={[0 0 1 0]}, 421 base=-2 2 -3 3, 422 name=monplan, 423 ] 424 \psSolid[object=plan, 425 definition=plantype, 426 fillcolor=Aquamarine, 427 planmarks, 428 args=monplan 429 ] 430 \axesIIID(0,0,0)(2,3,4) 431 \end{pspicture*} 432 433 \columnbreak 434 435 \begin{verbatim} 436 \psSolid[object=plan, 437 definition=plantype, 438 args=monplan 439 fillcolor=Aquamarine, 440 planmarks, 441 ] 442 \end{verbatim} 443 \end{multicols} 444 445 \section {Définir un objet de type plan} 446 447 Lorsque l'on doit réutiliser plusieurs fois un même plan affine, il 448 peut être intéressant de sauvegarder ses caractéristiques. En effet, 449 si l'on sauvegarde le solide représenté, on ne sauvegarde que les 450 sommets, les couleurs et les facettes~; on perd toute notion de repère 451 et d'orientation. Pour conserver ces caractériques, on utilise une 452 structure de donnée particulière, que nous nommerons de \textsl{type plan} . 453 454 Pour créer un tel objet, on utilise \Cadre{[object=plantype]} avec les 455 arguments \Cadre{[definition=...]} et \Cadre{[args=...]} comme pour la 456 définition d'un plan. On utilise l'argument \Cadre{[name=...]} pour 457 sauvegarder l'objet créé. 458 459 Ce dernier pourra alors être réutilisé pour définir des sections 460 planes ou des plans de projection. 461 462 \dbend 463 Ne pas oublier d'activer l'option \texttt{solidmemory} pour pouvoir 464 réutiliser cet objet. 465 466 \bigskip 467 468 Par exemple, le code ci-dessous est valide~: 469 \begin{verbatim} 470 \psset{solidmemory} 471 \psSolid[object=plantype, 472 definition=equation, 473 args={[0 0 1 0]}, 474 base=-2 2 -3 3, 475 name=monplan, 476 ] 477 \end{verbatim} 478 168 479 169 480 %% Le paramètre \verb+[base=+$x{min}$ ${x{max}}$ ${y{min}}$ trunk/pst-solides3d.tex
r33 r34 11 11 \ifx\MultidoLoaded\endinput\else\input multido.tex \fi 12 12 % JPV & ML & AS 13 \def\fileversion{3.1 5}14 \def\filedate{2008/06/0 1}13 \def\fileversion{3.16} 14 \def\filedate{2008/06/02} 15 15 \message{`PSTSOLIDESIIID' v\fileversion, \filedate} 16 16 % … … 185 185 \define@key[psset]{pst-solides3d}{file}{\def\pst@solides@file{#1}} 186 186 \psset[pst-solides3d]{file=}% pas de fichier par defaut 187 %% nom de l'objet de type plan 188 \define@key[psset]{pst-solides3d}{planname}{\def\pst@solides@planname{#1}} 189 \psset[pst-solides3d]{planname=}% pas de nom par defaut 187 190 %% nom de l'objet a charger (load) 188 191 \define@key[psset]{pst-solides3d}{load}{\def\pst@solides@load{#1}} … … 266 269 surface,calottespherecreuse,polygoneregulier,fusion,new,chemin,courbeR2,courbe,% 267 270 surfaceparametree,texte,trigospherique,vecteur,ligne,objfile,datfile,surface*,% 268 plan,offfile,geode,load }271 plan,offfile,geode,load,plantype} 269 272 %% Reservation de macros correspondants aux objects 270 273 \pst@solides@reservednames{object} … … 453 456 \fi 454 457 % 458 \ifx\pst@solides@planname\@empty 459 \else 460 /solidplanname (\pst@solides@planname) def 461 \fi 462 % 455 463 \ifx\pst@solides@load\@empty 456 464 \else trunk/solides.pro
r33 r34 1 1 %! 2 2 % PostScript prologue for pst-solides3d.tex. 3 % Version 3.2 0, 2008/06/013 % Version 3.21, 2008/06/02 4 4 % 5 5 %% COPYRIGHT 2008 by Jean-Paul Vignault, Manuel Luque … … 487 487 } def 488 488 489 /oldarrowpointe 12.5def490 /oldarrowplume 2.5def489 /oldarrowpointe {xunit 5 div} def 490 /oldarrowplume {xunit 10 div} def 491 491 /oldarrow@ngle 60 def 492 492 /oldarrowscale {1 1} def … … 8687 8687 } def 8688 8688 8689 /pst-plan {8689 /pst-plantype { 8690 8690 % args definition 8691 8691 args (pst-plan-) definition append cvx exec … … 8696 8696 ngrid length 0 ne { 8697 8697 dup ngrid planputngrid 8698 } if 8699 tx@Dict /solidname known { 8700 solidname cvlit exch bind def 8701 tx@Dict /solidname undef 8702 } { 8703 pop 8704 } ifelse 8705 } def 8706 8707 /pst-plan { 8708 % args definition 8709 args (pst-plan-) definition append cvx exec 8710 plan-@k not { 8711 dup base planputrange 8712 origin eqpl@n pointeqplan 0 eq { 8713 dup origin planputorigine 8714 } if 8715 ngrid length 0 ne { 8716 dup ngrid planputngrid 8717 } if 8698 8718 } if 8699 8719 /l@pl@n exch def … … 8706 8726 solidshowbase {l@pl@n planshowbase} if 8707 8727 solidshowbase3d {l@pl@n planshowbase3d} if 8708 % (Test) 0 0 l@pl@n cctextp3d8709 % l@pl@n planquadrillage8710 %8711 8728 } def 8712 8729 8713 8730 %x0 y0 z0 [normalvect] norm2plan 8731 /pst-plan-plantype { 8732 dup plan2eq /eqpl@n exch def 8733 /plan-@k true def 8734 } def 8735 8714 8736 /pst-plan-normalpoint { 8737 /plan-@k false def 8715 8738 norm2plan 8716 8739 dup plan2eq /eqpl@n exch def … … 8718 8741 8719 8742 /pst-plan-equation { 8743 /plan-@k false def 8720 8744 dup isarray { 8721 8745 dup /eqpl@n exch def trunk/tests/test_11.tex
r33 r34 18 18 %\psset{SphericalCoor=true,viewpoint=50 20 40} 19 19 20 \section {Définir un objet de type plan} 21 22 \begin{center} 23 %\psset{unit=0.75} 24 \psset{SphericalCoor=true,viewpoint=10 18 60,Decran=10,fontsize=10} 25 \begin{pspicture*}(-5,-4)(6,4) 26 \psframe(-5,-4)(6,4) 27 \psset{solidmemory} 28 \psSolid[object=plantype, 29 definition=equation, 30 args={[0 0 1 0]}, 31 base=-2 2 -3 3, 32 name=test, 33 ] 34 \psSolid[object=plan, 35 definition=plantype, 36 args=test] 37 %\codejps{test newplan drawsolid} 38 \axesIIID(0,0,0)(2,3,4) 39 \end{pspicture*} 40 \end{center} 41 20 42 \section {Plan défini par son équation} 21 43 … … 52 74 fillcolor=yellow, 53 75 origine=0 3 0, 76 planmarks, 54 77 base=-2 2 -3 3, 55 78 ngrid=1. 1.,
