00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #ifndef __vectorop_h
00043 #define __vectorop_h
00044
00045 #ifndef __double_real
00046 #define __double_real
00047 typedef double real;
00048 #endif
00049 #ifndef __double_vector
00050 #define __double_vector
00051 typedef real vector[4];
00052 #endif
00053 #ifndef __double_matrix
00054 #define __double_matrix
00055 typedef real matrix[4][4];
00056 #endif
00057
00058 void invmat(matrix mat, matrix inv, int n);
00059 real cofactor(matrix mat, int dim, int i, int j);
00060 real determ(matrix mat, int dim);
00061 void matmult(matrix m, matrix m1, matrix m2);
00062 void matminus(matrix m, matrix m1, matrix m2);
00063 void matplus(matrix m, matrix m1, matrix m2);
00064 void invrefine(matrix mat, matrix inv);
00065 void matident(matrix m);
00066 int testident(matrix m, real eps);
00067 void mattrans(matrix m, real tx, real ty, real tz);
00068 void matrotat(matrix mat, real rx, real ry, real rz);
00069 void matscale(matrix m, real sx, real sy, real sz);
00070 void matcopy(matrix m1, matrix m2);
00071 void vecmult(vector v1, vector v2, matrix m);
00072 void matprint(matrix m);
00073 void mattranspose(matrix m, matrix mtransp);
00074 int comp(real f1, real f2, real tol);
00075 real *makevec(real *v, real x, real y, real z, real w);
00076 real dot(real *v1, real *v2);
00077 real dot2(real *v1, real *v2, int drop);
00078 real vecd(real *v1, real *v2);
00079 int vecnull(real *vec, real eps);
00080 int vecnull2(real *vec, real eps, int drop);
00081 int vecequal(real *v1, real *v2);
00082 int veccolin(real *v1, real *v2, real eps);
00083 real *cross(real *v1, real *v2, real *v3);
00084 char normalize(real *v);
00085 real *veccopy(real *v1, real *v2);
00086 real *vecminus(real *res, real *v1, real *v2);
00087 real *vecplus(real *res, real *v1, real *v2);
00088 void vecesc(real *v, real *ve, real k);
00089 int getdrop(real *vec);
00090 void vecprint(vector v);
00091 real *veczer(real *v);
00092 real vecdet(real *v1, real *v2, real *v3);
00093 real *vecpe(real *vs, real *ve, real *v, real k);
00094 real *calc_p(real *v1, real *v2, real t, real *v);
00095 real *vec2cp(real *v, real *o);
00096 real vecd2(real *v1, real *v2);
00097 void rotmat(vector axis, real th, matrix rot);
00098 void matzer(matrix mat);
00099
00100 #endif