--- /mnt/ramdisk/glmlite/trunk/TEST3/ogl_matrix.mli     2013-05-08 12:56:20.080782246 +0200
+++ ogl_matrix.mli      2012-06-14 01:06:12.000000000 +0200
@@ -19,7 +19,7 @@
   from, out of or in connection with the software or the use or other dealings
   in the Software.
 *)
-(** a module to manage opengl matrices *)
+(** A module to manage OpenGL matrices. *)

 (** matrices handling by opengl is now deprecated,
     programmers are now supposed to handle matrices themselves,
@@ -29,6 +29,11 @@

 val get_identity: unit -> t

+val pi: float
+val deg_to_rad: float
+val rad_to_deg: float
+
+val copy: t -> t

 (** {3 projection matrices} *)

@@ -76,8 +81,52 @@
 ]}
 *)

+val rotation_matrix_of_axis :
+  axis:float * float * float -> angle:float -> t
+
 val mult_matrix: m1:t -> m2:t -> t

 val matrix_translate: matrix:t -> float * float * float -> unit
 (** imperative, modifies the matrix parameter *)

+
+val look_at:
+  eye:float * float * float ->
+  center:float * float * float ->
+  up_vector:float * float * float -> t
+(** replaces [gluLookAt] *)
+
+val unproject: win_x:float -> win_y:float -> win_z:float ->
+  model:float array -> proj:float array -> viewport:int array ->
+  float * float * float
+(** replaces [gluUnProject] *)
+
+
+(** {3 Low Functional Transformations} *)
+
+(** functional, returns a matrix from the input matrix with the transformation *)
+
+val translate_mat: m:t -> float * float * float -> t
+val scale_mat: m:t -> float * float * float -> t
+
+val x_rotate_mat: m:t -> float -> t
+val y_rotate_mat: m:t -> float -> t
+val z_rotate_mat: m:t -> float -> t
+
+val rotate_mat: m:t -> float -> float * float * float -> t
+
+(** {3 High Functional Transformations} *)
+
+val translate: t -> float * float * float -> (t -> 'a) -> 'a
+val scale: t -> float * float * float -> (t -> 'a) -> 'a
+val rotate_x: t -> float -> (t -> 'a) -> 'a
+val rotate_y: t -> float -> (t -> 'a) -> 'a
+val rotate_z: t -> float -> (t -> 'a) -> 'a
+val rotate: t -> float -> float * float * float -> (t -> 'a) -> 'a
+
+(** {3 Vectors} *)
+
+val normalise_vector: float * float * float -> float * float * float
+
+(**/**)
+val print_mat: t -> unit (* XXX DEBUG *)