home *** CD-ROM | disk | FTP | other *** search
- (*-------------------------------------------------------------*)
- (* TRANS3D.PAS *)
- (* Grafikserie: DREIdimensionale Transformation von Vektoren. *)
- (* Routinen zur Manipulation von Transformationsmatrizen. *)
- (*-------------------------------------------------------------*)
- (* Verschiebung *)
-
- PROCEDURE Translation(VAR Matrix : tMatrix;
- delta_x, delta_y,
- delta_z: REAL );
-
- VAR Temp : tMatrix;
-
- BEGIN
- Einheitsmatrix(Temp);
- Temp[4,1] := delta_x;
- Temp[4,2] := delta_y;
- Temp[4,3] := delta_z;
- MatMult(Matrix,Temp,Matrix);
- END;
-
- (*-------------------------------------------------------------*)
- (* Drehung *)
-
- (*--- Um X-Achse ---*)
- PROCEDURE X_Rotation(VAR Matrix : tMatrix;
- Phi : REAL );
-
- CONST Pi_durch_180 = 17.453292e-3;
-
- VAR Temp : tMatrix;
-
- BEGIN
- Phi := Phi*Pi_durch_180;
- Einheitsmatrix(Temp);
- Temp[2,2] := Cos(Phi);
- Temp[2,3] := Sin(Phi);
- Temp[3,2] := -Sin(Phi);
- Temp[3,3] := Cos(Phi);
- MatMult(Matrix,Temp,Matrix);
- END;
-
-
- (*--- Um Y-Achse ---*)
- PROCEDURE Y_Rotation(VAR Matrix : tMatrix;
- Phi : REAL );
-
- CONST Pi_durch_180 = 17.453292e-3;
-
- VAR Temp : tMatrix;
-
- BEGIN
- Phi := Phi*Pi_durch_180;
- Einheitsmatrix(Temp);
- Temp[1,1] := Cos(Phi);
- Temp[1,3] := -Sin(Phi);
- Temp[3,1] := Sin(Phi);
- Temp[3,3] := Cos(Phi);
- MatMult(Matrix,Temp,Matrix);
- END;
-
-
- (*--- Um Z-Achse ---*)
- PROCEDURE Z_Rotation(VAR Matrix : tMatrix;
- Phi : REAL );
-
- CONST Pi_durch_180 = 17.453292e-3;
-
- VAR Temp : tMatrix;
-
- BEGIN
- Phi := Phi*Pi_durch_180;
- Einheitsmatrix(Temp);
- Temp[1,1] := Cos(Phi);
- Temp[1,2] := Sin(Phi);
- Temp[2,1] := -Sin(Phi);
- Temp[2,2] := Cos(Phi);
- MatMult(Matrix,Temp,Matrix);
- END;
-
- (*-------------------------------------------------------------*)
- (* Skalieren *)
-
- PROCEDURE Skalierung(VAR Matrix : tMatrix;
- x_Faktor, y_Faktor,
- z_Faktor : REAL );
-
- VAR Temp : tMatrix;
-
- BEGIN
- Einheitsmatrix(Temp);
- Temp[1,1] := x_Faktor;
- Temp[2,2] := y_Faktor;
- Temp[3,3] := z_Faktor;
- MatMult(Matrix,Temp,Matrix);
- END;
-
- (*-------------------------------------------------------------*)
- (* Scherung (Verzerren) *)
-
- PROCEDURE Scherung(VAR Matrix : tMatrix;
- x_Shear, y_Shear : REAL );
-
- VAR Temp : tMatrix;
-
- BEGIN
- Einheitsmatrix(Temp);
- Temp[2,1] := x_Shear;
- Temp[1,2] := y_Shear;
- MatMult(Matrix,Temp,Matrix);
- END;
-
-
- PROCEDURE z_Scherung(VAR Matrix : tMatrix;
- XZ_Shear, YZ_Shear : REAL );
-
- VAR Temp : tMatrix;
-
- BEGIN
- Einheitsmatrix(Temp);
- Temp[3,1] := XZ_Shear;
- Temp[3,2] := YZ_Shear;
- MatMult(Matrix,Temp,Matrix);
- END;
-
-
- (*-------------------------------------------------------------*)
- (* Ende TRANS3D.PAS *)
-