Changeset 8
- Timestamp:
- 03/22/08 16:39:01 (8 months ago)
- Files:
-
- trunk/pst-solides3d.tex (modified) (2 diffs)
- trunk/solides.pro (modified) (10 diffs)
- trunk/tests/test_03.pdf (modified) (previous)
- trunk/tests/test_06.pdf (added)
- trunk/tests/test_06.tex (added)
- trunk/tests/test_07.pdf (added)
- trunk/tests/test_07.tex (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/pst-solides3d.tex
r2 r8 296 296 %% 297 297 \pst@def{optionssolides}<% 298 /pst@fill { \psk@opacityalpha .setopacityalpha fill } def 299 /strokeopacity \psk@opacityalpha def 300 /fillopacity \psk@opacityalpha def 298 301 /xunit {\pst@number\psunit } def 299 302 %% /cm {\pst@number\psunit mul} def … … 331 334 /base [ \pst@solides@base ] def 332 335 /axe { \pst@solides@axe } def 333 /function { \pst@solides@function }def336 /function (\pst@solides@function) def 334 337 /definition { \pst@solides@definition } def 335 338 /args { \pst@solides@args} def trunk/solides.pro
r7 r8 1 1 %! 2 2 % PostScript prologue for pst-solides3d.tex. 3 % Version 3.0 4, 2008/02/203 % Version 3.05, 2008/03/21 4 4 % 5 5 %% COPYRIGHT 2008 by Jean-Paul Vignault, Manuel Luque … … 303 303 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 304 304 305 %%%%% ### AAAopacity ### 306 %% les parametres pour la gestion de la transparence 307 /setstrokeopacity { 308 /strokeopacity exch def 309 } def 310 /setfillopacity { 311 /fillopacity exch def 312 } def 313 %% d apres un code de Jean-Michel Sarlat 314 %% http://melusine.eu.org/syracuse/swf/pdf2swf/setdash/ 315 %% Mise en reserve de la procedure stroke originelle. 316 /sysstroke {systemdict /stroke get exec} def 317 /sysfill {systemdict /fill get exec} def 318 % Mise en place de la nouvelle procedure 319 /stroke { 320 /strokeopacity where { 321 /strokeopacity get 322 } { 323 1 324 } ifelse 325 .setopacityalpha sysstroke 326 } def 327 /fill { 328 /fillopacity where { 329 /fillopacity get 330 } { 331 1 332 } ifelse 333 .setopacityalpha sysfill 334 } def 335 305 336 %%%%% ### AAAscale ### 306 337 %%%%%%%%%%%%%%%% les deplacements a l echelle %%%%%%%%%%%%%%%%%%% … … 1978 2009 /u defpoint3d 1979 2010 /norme u norme3d def 1980 norme 0 eq 1981 {u} 1982 {u 1 norme div mulv3d 2011 norme 0 eq { 2012 u 2013 } { 2014 u 1 norme div mulv3d 1983 2015 } ifelse 1984 2016 end … … 4102 4134 4103 4135 %% on marque les aretes 4104 0 1 n 1 sub { 4105 /j exch def 4106 /k1 F i j get_ij def %% indice sommet1 4107 /k2 F i j 1 add n mod get_ij def %% indice sommet2 4108 % A k1 k2 true put_ij 4109 % A k2 k1 true put_ij 4110 } for 4136 aretescachees { 4137 0 1 n 1 sub { 4138 /j exch def 4139 /k1 F i j get_ij def %% indice sommet1 4140 /k2 F i j 1 add n mod get_ij def %% indice sommet2 4141 A k1 k2 true put_ij 4142 A k2 k1 true put_ij 4143 } for 4144 } if 4111 4145 } if 4112 4146 end … … 5993 6027 5994 6028 %%%%% ### newtube ### 6029 /tub@dernierk1 [1 0 0] def 6030 /tub@dernierk2 [0 1 0] def 6031 /tub@dernierk3 [0 0 1] def 6032 6033 /inittube { 6034 2 dict begin 6035 normalize3d /vect3 defpoint3d 6036 normalize3d /vect2 defpoint3d 6037 normalize3d /vect1 defpoint3d 6038 vect1 norme3d 0 eq { 6039 vect2 vect3 vectprod3d /vect1 defpoint3d 6040 } if 6041 vect2 norme3d 0 eq { 6042 vect3 vect1 vectprod3d /vect2 defpoint3d 6043 } if 6044 vect3 norme3d 0 eq { 6045 vect1 vect2 vectprod3d /vect3 defpoint3d 6046 } if 6047 /tub@dernierk1 [vect1] store 6048 /tub@dernierk2 [vect2] store 6049 /tub@dernierk3 [vect3] store 6050 end 6051 } def 6052 5995 6053 %% syntaxe : tmin tmax (f) array r newtube -> solid 5996 6054 %% array = [K N] … … 6015 6073 6016 6074 %% definition du repere de Frenet (k1, k2, k3) au point f(a) 6017 a0 lafonction /M defpoint3d 6018 a0 laderivee normalize3d /k1 defpoint3d 6019 a0 laderivee2nd normalize3d /k2 defpoint3d 6020 k1 k2 vectprod3d /k3 defpoint3d 6021 6075 a0 lafonction pstrickactionR3 /M defpoint3d 6076 a0 laderivee normalize3d pstrickactionR3 /k1 defpoint3d 6077 a0 laderivee2nd normalize3d pstrickactionR3 /k2 defpoint3d 6078 k1 norme3d 0 eq { 6079 tub@dernierk1 aload pop pstrickactionR3 /k1 defpoint3d 6080 } { 6081 /tub@dernierk1 [k1] store 6082 } ifelse 6083 k2 norme3d 0 eq { 6084 tub@dernierk2 aload pop pstrickactionR3 /k2 defpoint3d 6085 } { 6086 /tub@dernierk2 [k2] store 6087 } ifelse 6088 k1 k2 vectprod3d normalize3d pstrickactionR3 /k3 defpoint3d 6089 k3 norme3d 0 eq { 6090 tub@dernierk3 aload pop pstrickactionR3 /k3 defpoint3d 6091 } { 6092 /tub@dernierk3 [k3] store 6093 } ifelse 6094 k3 k1 vectprod3d normalize3d pstrickactionR3 /k2 defpoint3d 6095 /tub@dernierk2 [k2] store 6022 6096 /@n 360 N div def %% le pas angulaire 6023 6097 0 @n 360 @n sub { 6024 / i exch def6098 /@i exch def 6025 6099 M 6026 k2 i cos @r mul mulv3d addv3d6027 k3 i sin @r mul mulv3d addv3d6100 k2 @i cos @r mul mulv3d addv3d 6101 k3 @i sin @r mul mulv3d addv3d 6028 6102 } for 6029 6103 } for … … 6549 6623 /pst-courbe { 6550 6624 solidlinewidth setlinewidth 6551 range aload pop {function} CourbeR3 6625 r 0 eq { 6626 range aload pop {function cvx exec} CourbeR3 6627 } { 6628 range aload pop function r ngrid newtube 6629 gere_pstricks_opt %% r function [36 12] newtube 6630 } ifelse 6552 6631 } def 6553 6632 … … 6561 6640 } if 6562 6641 } ifelse 6563 { function } newsurfaceparametree6642 { function cvx exec } newsurfaceparametree 6564 6643 dup videsolid 6565 6644 gere_pstricks_opt … … 6633 6712 newpath 6634 6713 linecolor 6635 range aload pop { function } CourbeR2_6714 range aload pop { function cvx exec } CourbeR2_ 6636 6715 gere_pstricks_proj_opt 6637 6716 } def … … 6641 6720 newpath 6642 6721 linecolor 6643 range aload pop {} { function } Courbeparam_6722 range aload pop {} { function cvx exec } Courbeparam_ 6644 6723 gere_pstricks_proj_opt 6645 6724 } def
