Les sources de Syracuse camview.pps

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Positionnement de la camera et du type de camera
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/ScreenDist 0.1 def
/ZoomFactor_x 100 def
/ZoomFactor_y 100 def

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% choix du type de representation
/representationtype (perspective) def
%/representationtype (ortho) def

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Set Camera Position
/SetCamPos { %% Cam_x Cam_y Cam_z
        /Cam_z@3d exch def
        /Cam_y@3d exch def
        /Cam_x@3d exch def
        /CamPos@3d {Cam_x@3d Cam_y@3d Cam_z@3d} def
} def

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Get Camera Position
/GetCamPos {
        CamPos@3d
} def

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Set Camera Looking vector
/SetCamVec { %% Cam_Vx Cam_Vy Cam_Vz
        /Cam_Vz@3d exch def
        /Cam_Vy@3d exch def
        /Cam_Vx@3d exch def
        /CamVec@3d {Cam_Vx@3d Cam_Vy@3d Cam_Vz@3d} def
} def

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Get Camera Looking vector
/GetCamVec {
        CamVec@3d
} def

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Set Camera Up vector
/SetCamUp { %% Cam_Ux Cam_Uy Cam_Uz
        /Cam_Uz@3d exch def
        /Cam_Uy@3d exch def
        /Cam_Ux@3d exch def
        /UpVec@3d {Cam_Ux@3d Cam_Uy@3d Cam_Uz@3d} def
} def

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Get Camera Up vector
/GetCamUp {
        UpVec@3d
} def
        
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Compute vectors usefull to CamView
/ComputeCamera {

        %% Calcule le vecteur directeur ZVecteur relatif a la camera
        CamVec@3d dupp3d norme3d -1 exch div mulv3d
        /ZVec_z@3d exch def
        /ZVec_y@3d exch def
        /ZVec_x@3d exch def
        /ZVec@3d {ZVec_x@3d ZVec_y@3d ZVec_z@3d} def

        %% Calcule le vecteur directeur YVecteur relatif a la camera
        ZVec@3d dupp3d UpVec@3d scalprod3d neg mulv3d UpVec@3d addv3d dupp3d norme3d 1 exch div mulv3d
        /YVec_z@3d exch def
        /YVec_y@3d exch def
        /YVec_x@3d exch def
        /YVec@3d {YVec_x@3d YVec_y@3d YVec_z@3d} def

        %% Calcule le vecteur directeur YVecteur relatif a la camera
        YVec@3d ZVec@3d vectprod3d
        /XVec_z@3d exch def
        /XVec_y@3d exch def
        /XVec_x@3d exch def
        /XVec@3d {XVec_x@3d XVec_y@3d XVec_z@3d} def
} def

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% On projete le point 3d sur le plan de representation de la camera, 
%% selon le mode de representation
/CamView { %% x y z
1 dict begin
        /M defpoint3d
        representationtype (ortho) eq
          {CamPos@3d M vecteur3d dupp3d
           ZVec@3d scalprod3d neg ZVec@3d lambdav3d
           addv3d dupp3d XVec@3d scalprod3d 0.01 ZoomFactor_x mul  mul
           4 1 roll YVec@3d scalprod3d 0.01 ZoomFactor_y mul mul
        }
          {CamPos@3d M vecteur3d dupp3d
           ZVec@3d scalprod3d neg ScreenDist exch div mulv3d
           dupp3d XVec@3d scalprod3d ZoomFactor_x mul
           4 1 roll YVec@3d scalprod3d ZoomFactor_y mul
        } ifelse
end
} def


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

%% %%%%%%%% NOUVEAU %%%%%%%%
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %% Set Camera Position
%% /SetCamPos { %% Cam_x Cam_y Cam_z
%% 	   /Cam_z exch def
%% 	   /Cam_y exch def
%% 	   /Cam_x exch def
%% 	   /CamPos {Cam_x Cam_y Cam_z} def
%% } def
%% 
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %% Get Camera Position
%% /GetCamPos {
%% 	   CamPos
%% } def
%% 
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %% Set Camera Looking vector
%% /SetCamVec { %% Cam_Vx Cam_Vy Cam_Vz
%% 	   /Cam_Vz exch def
%% 	   /Cam_Vy exch def
%% 	   /Cam_Vx exch def
%% 	   /CamVec {Cam_Vx Cam_Vy Cam_Vz} def
%% } def
%% 
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %% Get Camera Looking vector
%% /GetCamVec {
%% 	   CamVec
%% } def
%% 
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %% Set Camera Up vector
%% /SetCamUp { %% Cam_Ux Cam_Uy Cam_Uz
%% 	   /Cam_Uz exch def
%% 	   /Cam_Uy exch def
%% 	   /Cam_Ux exch def
%% 	   /UpVec {Cam_Ux Cam_Uy Cam_Uz} def
%% } def
%% 
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %% Get Camera Up vector
%% /GetCamUp {
%% 	   UpVec
%% } def
%% 
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %% Compute vectors usefull to CamView
%% /ComputeCamera {
%% 
%% 	   %% Calcule le vecteur directeur ZVecteur relatif a la camera
%% 	   CamVec dupp3d norme3d -1 exch div mulv3d
%% 	   /ZVec_z exch def
%% 	   /ZVec_y exch def
%% 	   /ZVec_x exch def
%% 	   /ZVec {ZVec_x ZVec_y ZVec_z} def
%% 
%% 	   %% Calcule le vecteur directeur YVecteur relatif a la camera
%% 	   ZVec dupp3d UpVec scalprod3d neg mulv3d UpVec addv3d dupp3d norme3d 1 exch div mulv3d
%% 	   /YVec_z exch def
%% 	   /YVec_y exch def
%% 	   /YVec_x exch def
%% 	   /YVec {YVec_x YVec_y YVec_z} def
%% 
%% 	   %% Calcule le vecteur directeur YVecteur relatif a la camera
%% 	   YVec ZVec vectprod3d
%% 	   /XVec_z exch def
%% 	   /XVec_y exch def
%% 	   /XVec_x exch def
%% 	   /XVec {XVec_x XVec_y XVec_z} def
%% } def
%% 
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %% On projete le point 3d sur le plan de representation de la camera, 
%% %% selon le mode de representation
%% /CamView { %% x y z
%% 1 dict begin
%% 	   /M defpoint3d
%% 	   representationtype (ortho) eq
%% 	     {CamPos M vecteur3d dupp3d
%% 	      ZVec scalprod3d neg ZVec lambdav3d
%% 	      addv3d dupp3d XVec scalprod3d 0.01 ZoomFactor_x mul  mul
%% 	      4 1 roll YVec scalprod3d 0.01 ZoomFactor_y mul mul
%% 	   }
%% 	     {CamPos M vecteur3d dupp3d
%% 	      ZVec scalprod3d neg ScreenDist exch div mulv3d
%% 	      dupp3d XVec scalprod3d ZoomFactor_x mul
%% 	      4 1 roll YVec scalprod3d ZoomFactor_y mul
%% 	   } ifelse
%% end
%% } def

%%%%%%%%%%%%% complements, jpv, 09/08/2006 %%%%%%%%%%%%%%%%%%%%%%%%%%

%% syntaxe : M SetCamView --> oriente la camera vers le point M, et
%% affecte les vecteurs CamVec et CamUp en consequence
/SetCamView {
   GetCamPos vecteur3d 
   -1 mulv3d normalize3d 
   3 copy SetCamVec
   GetCamUp
   vectprod3d
   GetCamVec
   vectprod3d normalize3d SetCamUp
   ComputeCamera
} def

/xmin3d -5 def
/xmax3d 6 def
/ymin3d -3 def
/ymax3d 5 def
/zmin3d -3 def
/zmax3d 5 def

/setxrange3d {
   /xmax3d exch def
   /xmin3d exch def
} def
/setyrange3d {
   /ymax3d exch def
   /ymin3d exch def
} def
/setzrange3d {
   /zmax3d exch def
   /zmin3d exch def
} def

/3dto2d {
   CamView
} def


Page composée par petitParseur[ps2html] le lundi 8 septembre 2008.