package GLOBE_3D.Math is
function "*" (l : Real; v : Vector_3D) return Vector_3D;
pragma Inline ("*");
function "*" (v : Vector_3D; l : Real) return Vector_3D;
pragma Inline ("*");
function "+" (a, b : Vector_3D) return Vector_3D;
pragma Inline ("+");
function "-" (a : Vector_3D) return Vector_3D;
pragma Inline ("-");
function "-" (a, b : Vector_3D) return Vector_3D;
pragma Inline ("-");
function "*" (a, b : Vector_3D) return Real;
pragma Inline ("*");
function "*" (a, b : Vector_3D) return Vector_3D;
pragma Inline ("*");
function Norm (a : Vector_3D) return Real;
pragma Inline (Norm);
function Norm2 (a : Vector_3D) return Real;
pragma Inline (Norm2);
function Normalized (a : Vector_3D) return Vector_3D;
function Angle (Point_1, Point_2, Point_3 : Vector_3D) return Real;
function to_Degrees (Radians : Real) return Real;
function to_Radians (Degrees : Real) return Real;
function "*" (A, B : Matrix_33) return Matrix_33;
function "*" (A : Matrix_33; x : Vector_3D) return Vector_3D;
function "*" (A : Matrix_44; x : Vector_3D) return Vector_3D;
function "*" (A : Matrix_44; x : Vector_3D) return Vector_4D;
function Transpose (A : Matrix_33) return Matrix_33;
function Transpose (A : Matrix_44) return Matrix_44;
function Det (A : Matrix_33) return Real;
function XYZ_rotation (ax, ay, az : Real) return Matrix_33;
function XYZ_rotation (v : Vector_3D) return Matrix_33;
function Look_at (direction : Vector_3D) return Matrix_33;
function Look_at (eye, center, up : Vector_3D) return Matrix_33;
procedure Re_Orthonormalize (M : in out Matrix_33);
procedure Multiply_GL_Matrix (A : Matrix_33);
procedure Set_GL_Matrix (A : Matrix_33);
function Almost_zero (x : Real) return Boolean;
pragma Inline (Almost_zero);
function Almost_zero (x : GL.C_Float) return Boolean;
pragma Inline (Almost_zero);
function sub_Matrix (Self : Matrix;
start_Row, end_Row,
start_Col, end_Col : Positive) return Matrix;
end GLOBE_3D.Math;