Fichier tour.jps — Modifié le 8 Janvier 2008 à 11 h 13

tour.pdf
Source
%% code experimental. tout cela doit etre travaille

usecolor
-6 6 setxrange
-5 8 setyrange
30 setxunit

-7 7 8 SetCamPos
0 0 0 SetCamView
2 setlinejoin 

qplanxy

solidgridOff
{orange} setlight
5 12 6 setlightsrc
2 setlightintensity

%% syntaxe : z0 z1 r1 newhyperboloid -> solid
/newhyperboloid {
11 dict begin
   dup xcheck {
      /mode exch def
   } {
      dup isstring {
         cvx exec 
         /N exch def
         /n exch def
         /mode -1 def
      } {
         /mode defaultsolidmode def
      } ifelse
   } ifelse

   mode 0 ge {
      mode 4 eq {
         /N 18 def     %% diviseur de 360
         /n 5 def      %% nb d'etages
      } {
   	 mode 3 eq {
            /N 12 def     %% diviseur de 360
            /n 3 def      %% nb d'etages
   	 } {
            /N 10 def     %% diviseur de 360
            /n 1 def      %% nb d'etages
   	 } ifelse
      } ifelse
   } if

   /r0 exch def
   /z1 exch def
   /z0 exch def
   /dz z1 z0 sub n div def

   /FE [ 
%      [0 1 N 1 sub {} for] 
%      [n 1 add N mul 1 sub -1 n N mul {} for]

      0 1 n 1 sub {
      /k exch def
   	 k N mul 1 add 1 k 1 add N mul 1 sub {
   	     /i exch def
   	     [i i 1 sub N i add 1 sub N i add]
   	 } for
   	 [k N mul k 1 add N mul 1 sub k 2 add N mul 1 sub k 1 add N mul]
      } for

   ] def 
   /FI FE {reverse} apply def

   %% tableau des sommets 
   /S [ 
      n -1 0 {
   	 /k exch def
   	 0 1 N 1 sub {
   	     /i exch def
             /r z0 dz k mul add dup mul 4 div 1 add sqrt def
   	     360 N idiv i mul cos r mul
   	     360 N idiv i mul sin r mul
   	     z0 dz k mul add
   	 } for
      } for
   ] def 
   [S FE FI append [] []]
end
} def

/fillstyle {jaune fill} def
-3 2 2 (10 18) newhyperboloid
{0 0 3 translatepoint3d} solidtransform
drawsolid**