home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 10 / grafik / trans3d.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1987-07-29  |  3.1 KB  |  129 lines

  1. (*-------------------------------------------------------------*)
  2. (*                     TRANS3D.PAS                             *)
  3. (* Grafikserie: DREIdimensionale Transformation von Vektoren.  *)
  4. (* Routinen zur Manipulation von Transformationsmatrizen.      *)
  5. (*-------------------------------------------------------------*)
  6. (*                     Verschiebung                            *)
  7.  
  8. PROCEDURE Translation(VAR Matrix : tMatrix;
  9.                       delta_x, delta_y,
  10.                       delta_z: REAL         );
  11.  
  12. VAR Temp : tMatrix;
  13.  
  14. BEGIN
  15.   Einheitsmatrix(Temp);
  16.   Temp[4,1] := delta_x;
  17.   Temp[4,2] := delta_y;
  18.   Temp[4,3] := delta_z;
  19.   MatMult(Matrix,Temp,Matrix);
  20. END;
  21.  
  22. (*-------------------------------------------------------------*)
  23. (*                        Drehung                              *)
  24.  
  25. (*--- Um X-Achse ---*)
  26. PROCEDURE X_Rotation(VAR Matrix : tMatrix;
  27.                      Phi : REAL            );
  28.  
  29. CONST Pi_durch_180 = 17.453292e-3;
  30.  
  31. VAR Temp : tMatrix;
  32.  
  33. BEGIN
  34.   Phi := Phi*Pi_durch_180;
  35.   Einheitsmatrix(Temp);
  36.   Temp[2,2] := Cos(Phi);
  37.   Temp[2,3] := Sin(Phi);
  38.   Temp[3,2] := -Sin(Phi);
  39.   Temp[3,3] := Cos(Phi);
  40.   MatMult(Matrix,Temp,Matrix);
  41. END;
  42.  
  43.  
  44. (*--- Um Y-Achse ---*)
  45. PROCEDURE Y_Rotation(VAR Matrix : tMatrix;
  46.                      Phi : REAL            );
  47.  
  48. CONST Pi_durch_180 = 17.453292e-3;
  49.  
  50. VAR Temp : tMatrix;
  51.  
  52. BEGIN
  53.   Phi := Phi*Pi_durch_180;
  54.   Einheitsmatrix(Temp);
  55.   Temp[1,1] := Cos(Phi);
  56.   Temp[1,3] := -Sin(Phi);
  57.   Temp[3,1] := Sin(Phi);
  58.   Temp[3,3] := Cos(Phi);
  59.   MatMult(Matrix,Temp,Matrix);
  60. END;
  61.  
  62.  
  63. (*--- Um Z-Achse ---*)
  64. PROCEDURE Z_Rotation(VAR Matrix : tMatrix;
  65.                      Phi : REAL            );
  66.  
  67. CONST Pi_durch_180 = 17.453292e-3;
  68.  
  69. VAR Temp : tMatrix;
  70.  
  71. BEGIN
  72.   Phi := Phi*Pi_durch_180;
  73.   Einheitsmatrix(Temp);
  74.   Temp[1,1] := Cos(Phi);
  75.   Temp[1,2] := Sin(Phi);
  76.   Temp[2,1] := -Sin(Phi);
  77.   Temp[2,2] := Cos(Phi);
  78.   MatMult(Matrix,Temp,Matrix);
  79. END;
  80.  
  81. (*-------------------------------------------------------------*)
  82. (*                     Skalieren                               *)
  83.  
  84. PROCEDURE Skalierung(VAR Matrix : tMatrix;
  85.                      x_Faktor, y_Faktor,
  86.                      z_Faktor            : REAL );
  87.  
  88. VAR Temp : tMatrix;
  89.  
  90. BEGIN
  91.   Einheitsmatrix(Temp);
  92.   Temp[1,1] := x_Faktor;
  93.   Temp[2,2] := y_Faktor;
  94.   Temp[3,3] := z_Faktor;
  95.   MatMult(Matrix,Temp,Matrix);
  96. END;
  97.  
  98. (*-------------------------------------------------------------*)
  99. (*                  Scherung (Verzerren)                       *)
  100.  
  101. PROCEDURE Scherung(VAR Matrix : tMatrix;
  102.                    x_Shear, y_Shear : REAL );
  103.  
  104. VAR Temp : tMatrix;
  105.  
  106. BEGIN
  107.   Einheitsmatrix(Temp);
  108.   Temp[2,1] := x_Shear;
  109.   Temp[1,2] := y_Shear;
  110.   MatMult(Matrix,Temp,Matrix);
  111. END;
  112.  
  113.  
  114. PROCEDURE z_Scherung(VAR Matrix : tMatrix;
  115.                      XZ_Shear, YZ_Shear : REAL );
  116.  
  117. VAR Temp : tMatrix;
  118.  
  119. BEGIN
  120.   Einheitsmatrix(Temp);
  121.   Temp[3,1] := XZ_Shear;
  122.   Temp[3,2] := YZ_Shear;
  123.   MatMult(Matrix,Temp,Matrix);
  124. END;
  125.  
  126.  
  127. (*-------------------------------------------------------------*)
  128. (*                    Ende TRANS3D.PAS                         *)
  129.