package REF is new Ada.Numerics.Generic_Elementary_Functions (Double);
package RIO is new Ada.Text_IO.Float_IO (Double);
type Vector_4D is array (0 .. 3) of Double;
type Matrix is array (Positive range <>, Positive range <>) of aliased Double;
type Matrix_33 is new Matrix (1 .. 3, 1 .. 3);
type Matrix_44 is new Matrix (1 .. 4, 1 .. 4);
Id_33 : constant Matrix_33 := ((1.0, 0.0, 0.0), (0.0, 1.0, 0.0), (0.0, 0.0, 1.0));
function "*"
( | l | : Double; |
v | : Double_Vector_3D) return Double_Vector_3D; |
function "*"
( | v | : Double_Vector_3D; |
l | : Double) return Double_Vector_3D; |
function "+"
( | a, b | : Double_Vector_3D) return Double_Vector_3D; |
function "-"
( | a | : Double_Vector_3D) return Double_Vector_3D; |
function "-"
( | a, b | : Double_Vector_3D) return Double_Vector_3D; |
function "*"
( | a, b | : Double_Vector_3D) return Double; |
function "*"
( | a, b | : Double_Vector_3D) return Double_Vector_3D; |
function Norm
( | a | : Double_Vector_3D) return Double; |
function Norm2
( | a | : Double_Vector_3D) return Double; |
function Normalized
( | a | : Double_Vector_3D) return Double_Vector_3D; |
function Angle
( | Point_1, Point_2, Point_3 | : Double_Vector_3D) return Double; |
function "*"
( | A | : Matrix_33; |
x | : Double_Vector_3D) return Double_Vector_3D; |
function "*"
( | A | : Matrix_44; |
x | : Double_Vector_3D) return Double_Vector_3D; |
function "*"
( | A | : Matrix_44; |
x | : Double_Vector_3D) return Vector_4D; |
function XYZ_rotation
( | v | : Double_Vector_3D) return Matrix_33; |
function Look_at
( | direction | : Double_Vector_3D) return Matrix_33; |
function Look_at
( | eye, center, up | : Double_Vector_3D) return Matrix_33; |
procedure Re_Orthonormalize
( | M | : in out Matrix_33); |
procedure Multiply_GL_Matrix
( | A | : Matrix_33); |
function Almost_zero
( | x | : Double) return Boolean; |
function Almost_zero
( | x | : GL.C_Float) return Boolean; |