--- /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 *)