libmove3d
3.13.0
|
00001 #define EPS6 0.000001 00002 #define FUZZ 0.00001 00003 #define ABS(x) (((x) >= 0.0) ? (x) : -(x)) 00004 #define MIN(x,y) (((x) < (y)) ? (x) : (y)) 00005 #define MAX(x,y) (((x) > (y)) ? (x) : (y)) 00006 #define SQR(x) ((x)*(x)) 00007 #define EQ(x,y) (ABS((x)-(y)) < FUZZ) 00008 00009 typedef double matrix4[4][4]; 00010 typedef double vector4[4]; 00011 00012 /**********************************************************************/ 00013 00014 extern void vectCopy(double *src, double *dest); 00015 extern void vectAdd(double *a, double *b, double *c); 00016 extern void vectSub(double *a, double *b, double *c); 00017 extern double vectNorm(double *v); 00018 extern void vectNormalize(double *src, double *dest); 00019 extern void vectXprod(double *a, double *b, double *c); 00020 extern void normalized_vectXprod(double *a, double *b, double *c); 00021 extern double vectDotProd(double *a, double *b); 00022 extern int same_sign_vect(double *v1, double *v2); 00023 extern void vectScale(double *src, double *dest, double k); 00024 00025 extern void mat4vec3MultPos(matrix4 a, double *v, vector4 c); 00026 extern void mat4Mult(matrix4 a, matrix4 b, matrix4 c); 00027 extern void matMultXform(matrix4 a, matrix4 b, matrix4 c); 00028 extern void mat4Copy(matrix4 source, matrix4 dest); 00029 00030 extern void inverse_transf(matrix4 M, matrix4 inv); 00031 extern void transf_rotz(double q, matrix4 T); 00032 extern void inv_transf_rotz(double q, matrix4 T); 00033 00034 extern void mat4Rot(matrix4 M, double *axe, double t); 00035 extern void vectDeltaRot(double *axe, double * t, double *axe1, double *axe2); 00036 extern void mat4DeltaRot(matrix4 M, double *axe1, double t1, double *axe2, double t2); 00037 extern void mat4ExtractPosReverseOrder(matrix4 M, 00038 double * Tx, double * Ty, double * Tz, 00039 double * Rx, double * Ry, double * Rz); 00040 00041 extern double compute_dihedang(double *nJa, double *tJa, double *pJa); 00042 extern void compute_frame(double *opos, double *xaxis, double *zaxis, matrix4 T); 00043 extern void compute_dihedang_and_frame(double *a1pos, double *a2pos,double *a3pos, double *a4pos, 00044 double *dihedang, matrix4 T); 00045 extern void compute_distance(double *P1, double *P2, double *dist); 00046