%% syntaxe : array z0 z1 newprisme -> solid d axe (O, u),
/newprismedroit {
[[/N] [1] [1] [1] [3] [6]] gestionsolidmode
0 0 1 [N] newprisme
} def
%% syntaxe : array z0 z1 u newprisme -> solid d axe (O, u),
%% ou array tableau de points 2d
/newprisme {
7 dict begin
[[/N] [1] [1] [1] [3] [6]] gestionsolidmode
dup 0 eq {
(Error : 3eme composante nulle dans le vecteur pour newprisme) ==
quit
} if
/u defpoint3d
/z1 exch def
/z0 exch def
%% N = nb d etages
/table exch def
%% n = indice du dernier point
/n table length 2 idiv 1 sub def
%% vecteur de translation
u
z1 z0 sub 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
z0
v N j sub N div mulv addv3d
} for
} for
] def
/F [
%% face superieure
[0 1 n {} for]
%% base
[N 1 add n 1 add mul 1 sub -1 N n 1 add mul {} for]
%% 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
[0 j 1 sub n 1 add mul add
n j 1 sub n 1 add mul add
2 n mul 1 add j 1 sub n 1 add mul add
n 1 add j 1 sub n 1 add mul add]
} for
] def
S F generesolid
end
} def
%% %% syntaxe : array z0 z1 newprismedroit -> solid, ou array
%% %% tableau de points 2d
%% /newprismedroit {
%% 5 dict begin
%% /z1 exch def
%% /z0 exch def
%% /table exch def
%% /n table length 2 idiv 1 sub def
%%
%% %% tableau des sommets
%% /S [
%% 0 1 n {
%% /i exch def
%% table i getp
%% z1
%% } for
%%
%% 0 1 n {
%% /i exch def
%% table i getp
%% z0
%% } for
%% ] def
%%
%% /F [
%% [0 1 n {} for]
%% [2 n mul 1 add -1 n 1 add {} for]
%% 1 1 n {
%% /i exch def
%% [i i 1 sub n 1 add i add 1 sub n 1 add i add]
%% } for
%% [0 n 2 n mul 1 add n 1 add]
%% ] def
%%
%% S F generesolid
%% end
%% } def
%% %% syntaxe : array z0 z1 newprismedroit -> solid, ou array
%% %% tableau de points 2d
%% /newprismedroit {
%% 5 dict begin
%% /z1 exch def
%% /z0 exch def
%% /table exch def
%% /n table length 2 idiv 1 sub def
%%
%% %% tableau des sommets
%% /S [
%% 0 1 n {
%% /i exch def
%% table i getp
%% z1
%% } for
%%
%% 0 1 n {
%% /i exch def
%% table i getp
%% z0
%% } for
%% ] def
%%
%% /F [
%% [0 1 n {} for]
%% [2 n mul 1 add -1 n 1 add {} for]
%% 1 1 n {
%% /i exch def
%% [i i 1 sub n 1 add i add 1 sub n 1 add i add]
%% } for
%% [0 n 2 n mul 1 add n 1 add]
%% ] def
%%
%% S F generesolid
%% end
%% } def
%%
%% %% syntaxe : array z0 z1 u newprisme -> solid d'axe (O, u),
%% %% ou array tableau de points 2d
%% /newprisme {
%% 6 dict begin
%% dup 0 eq {
%% (Error : 3eme composante nulle dans le vecteur pour newprisme) ==
%% quit
%% } if
%% /u defpoint3d
%% /z1 exch def
%% /z0 exch def
%% /table exch def
%% /n table length 2 idiv 1 sub def
%%
%% %% vecteur de translation
%% u
%% z1 z0 sub u norme3d div
%% mulv3d /v defpoint3d
%%
%% %% tableau des sommets
%% /S [
%% 0 1 n {
%% /i exch def
%% table i getp
%% z0
%% v addv3d
%% } for
%%
%% 0 1 n {
%% /i exch def
%% table i getp
%% z0
%% } for
%% ] def
%%
%% /F [
%% [0 1 n {} for]
%% [2 n mul 1 add -1 n 1 add {} for]
%% 1 1 n {
%% /i exch def
%% [i i 1 sub n 1 add i add 1 sub n 1 add i add]
%% } for
%% [0 n 2 n mul 1 add n 1 add]
%% ] def
%%
%% S F generesolid
%% end
%% } def
|