%% syntaxe : array h u [n] newruban -> solid d axe (O, u), de maillage vertical n
%% syntaxe : array h u newruban -> solid d axe (O, u),
%% syntaxe : array h newruban -> solid d axe (O, k),
%% ou array tableau de points 2d
/newruban {
7 dict begin
%% N = nb d etages
[[/N] [1] [1] [1] [3] [4]] gestionsolidmode
2 copy pop isarray {
/u {0 0 1} def
} {
/u defpoint3d
} ifelse
u 0 eq {
(Error : 3eme composante nulle dans le vecteur pour newruban) ==
quit
} if
pop pop
/h exch def
/table exch def
%% n = indice du dernier point
/n table length 2 idiv 1 sub def
%% vecteur de translation
u
h u norme3d div
mulv3d /v defpoint3d
%% tableau des sommets
/S [
0 1 N {
/j exch def
0 1 n {
/i exch def
table i getp
0
v N j sub N div mulv addv3d
} for
} for
] def
/F [
%% faces etage
1 1 N {
/j exch def
1 1 n {
/i exch def
[i j 1 sub n 1 add mul add
i 1 sub j 1 sub n 1 add mul add
n 1 add i add 1 sub j 1 sub n 1 add mul add
n 1 add i add j 1 sub n 1 add mul add]
} for
} for
] def
S F generesolid
dup videsolid
end
} def
|