Fichier tour.jps — Modifié le 8 Janvier 2008 à 11 h 13
%% 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**