Les sources de Syracuse geom3D_02.jps
geom3D_02.jpg

%% auteur : 
%% auteur : 
%% trace d'un cube de cubes

%% les parametres
-3 5 setxrange
-1 6 setyrange

/alpha 30 def           %% angle de la perspective cavaliere
/beta 90 def            %% angle que fait l'arete (BC) avec l'horizontale
/L .5 def
/l L def
/h L def

/A {0 .5} def
/n 5 def

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% vecteur pour la translation verticale
/u {
   h beta cos mul
   h beta sin mul
} def
%% vecteur pour la translation sur la profondeur
/v {
   l alpha cos mul 1.5 div
   l alpha sin mul 1.5 div
} def
%% vecteur pour la translation horizontale
/w {
   L 1.5 mul
   0
} def

%% syntaxe : M cube
/cube {
20 dict begin
   /A defpoint           %% le coin inférieur gauche de la face avant

   %% la face avant, obtenue par translations du point A
   /B {A L 0 addv} def
   /C {B u addv} def
   /D {A u addv} def
   
   %% on translate la face avant vers l'arriere
   [A B C D]               %% le tableau de la face avant
   %% dup points           %% on le duplique puis on marque les sommets
                           %% (pendant la mise au point)
   {v addv} papply         %% on additionne le vecteur v (que les matheux
                           %% me pardonnent) a tous les points du tableau
   aload pop               %% on vide le tableau sur la pile
   /H defpoint             %% et on recupere les points en les nommant
   /G defpoint 
   /F defpoint 
   /E defpoint 
   
   %% on dessine les faces
   /fillstyle {bleu fill} def
   [A B C D] polygone*
   /fillstyle {jaune fill} def
   [C G F B] polygone*
   /fillstyle {orange fill} def
   [D H G C] polygone*
   
%%    %% les aretes en pointille
%%    gsave
%%       jpegmode
%%       pointilles
%%       [A E H] ligne
%%       [F E] ligne
%%    grestore
end
} def


%% syntaxe : A rangee
/rangee {
   [ 3 1 roll
   n {
      dupp
      w addv
   } repeat
   ] {cube} papply
} def

%A rangee

%% syntaxe : A plan
/plan {
   [ 3 1 roll
   n {
      dupp
      v -1.5 mulv addv
   } repeat
   ] {rangee} papply
} def

%A plan
 
%% syntaxe : A groscube
/groscube {
   [ 3 1 roll
   n {
      dupp
      u 1.5 mulv addv
   } repeat
   ] {plan} papply
} def

A groscube




Page composée par petitParseur[ps2html] le dimanche 12 octobre 2008.