libmove3d
3.13.0
|
00001 #ifndef _p3d_MATRIX_H 00002 #define _p3d_MATRIX_H 00003 00004 typedef double p3d_matrix_type; 00005 00006 00007 typedef p3d_matrix_type p3d_matrix2[2][2]; // modif Juan 00008 typedef p3d_matrix_type p3d_matrix3[3][3]; 00009 typedef p3d_matrix_type p3d_matrix4[4][4]; 00010 typedef p3d_matrix4 *pp3d_matrix4; 00011 00012 typedef p3d_matrix_type p3d_vector2[2]; // modif Juan 00013 typedef p3d_matrix_type p3d_vector3[3]; 00014 typedef p3d_matrix_type p3d_vector4[4]; 00015 00016 00017 /* 00018 void p3d_mat4Add(p3d_matrix4 a, p3d_matrix4 b, p3d_matrix4 c); 00019 void p3d_mat4Sub(p3d_matrix4 a, p3d_matrix4 b, p3d_matrix4 c); 00020 void p3d_mat4Mult(p3d_matrix4 a, p3d_matrix4 b, p3d_matrix4 c); 00021 void p3d_mat3Mult(p3d_matrix3 a, p3d_matrix3 b, p3d_matrix3 c); 00022 void p3d_matvec4Mult(p3d_matrix4 a, p3d_vector4 v, p3d_vector4 c); 00023 void p3d_mat4Copy(p3d_matrix4 source, p3d_matrix4 dest); 00024 void p3d_mat3Copy(p3d_matrix3 source, p3d_matrix3 dest); 00025 void p3d_mat4Transpose(p3d_matrix4 source, p3d_matrix4 dest); 00026 void p3d_mat3Transpose(p3d_matrix3 source, p3d_matrix3 dest); 00027 void p3d_mat4Print(p3d_matrix4 M, char *name); 00028 void p3d_mat3Print(p3d_matrix3 M, char *name); 00029 double p3d_mat3Det(p3d_matrix3 mat); 00030 int p3d_mat3Invert(p3d_matrix3 mat, p3d_matrix3 invmat); <- modif Etienne Ferre 00031 void p3d_vec3Mat3Mult(p3d_matrix3 M, p3d_vector3 a, p3d_vector3 b); <- modif Etienne Ferre 00032 00033 void p3d_matMultXform(p3d_matrix4 a, p3d_matrix4 b, p3d_matrix4 c); 00034 void p3d_matInvertXform(p3d_matrix4 M, p3d_matrix4 inv); 00035 00036 inserer par david Brunet 00037 int p3d_matInvertArbitraryXform(p3d_matrix4 M, p3d_matrix4 inv); 00038 00039 void p3d_matBuildXform(char *axes, p3d_matrix_type angles[], 00040 p3d_matrix_type dx, p3d_matrix_type dy, p3d_matrix_type dz, 00041 p3d_matrix4 M); 00042 00043 void p3d_xformPoint(p3d_matrix4 M, p3d_vector3 p, p3d_vector3 p2); 00044 void p3d_xformVect(p3d_matrix4 M, p3d_vector3 v, p3d_vector3 v2); 00045 void p3d_xform4(p3d_matrix4 M, p3d_vector4 x, p3d_vector4 x2); 00046 void p3d_xform3(p3d_matrix3 M, p3d_vector3 x, p3d_vector3 x2); 00047 00048 void p3d_vectCopy(p3d_vector3 src, p3d_vector3 dest); 00049 void p3d_vectAdd(p3d_vector3 a, p3d_vector3 b, p3d_vector3 c); 00050 void p3d_vectSub(p3d_vector3 a, p3d_vector3 b, p3d_vector3 c); 00051 void p3d_vectNeg(p3d_vector3 src, p3d_vector3 dest); 00052 void p3d_vectScale(p3d_vector3 src, p3d_vector3 dest, p3d_matrix_type k); 00053 void p3d_vectNormalize(p3d_vector3 src, p3d_vector3 dest); 00054 00055 p3d_matrix_type p3d_vectNorm(p3d_vector3 v); 00056 int p3d_vectEqual(p3d_vector3 a, p3d_vector3 b); 00057 p3d_matrix_type p3d_vectDotProd(p3d_vector3 a, p3d_vector3 b); 00058 void p3d_vectXprod(p3d_vector3 a, p3d_vector3 b, p3d_vector3 c); 00059 p3d_matrix_type p3d_planeDist(p3d_vector4 plane, p3d_vector3 point); 00060 void p3d_displacePoint(p3d_vector3 point, p3d_vector3 vect, 00061 p3d_matrix_type lambda, p3d_vector3 result); 00062 00063 */ 00064 extern p3d_matrix3 p3d_mat3IDENTITY; 00065 extern p3d_matrix4 p3d_mat4IDENTITY; 00066 extern p3d_matrix4 p3d_mat4NULL; 00067 extern p3d_matrix3 p3d_mat3NULL; 00068 00069 #endif