1 #ifndef __JBXL_MATRIX_LIBRARY_H_
2 #define __JBXL_MATRIX_LIBRARY_H_
21 typedef struct _ivector {
29 typedef struct _vector {
37 typedef struct _quaternion {
53 typedef struct _imatrix {
68 typedef struct _matrix {
76 #define in_vector(a, b) ((a).x*(b).x+(a).y*(b).y+(a).z*(b).z)
77 #define add_vector(a, b) set_vector((a).x+(b).x,(a).y+(b).y,(a).z+(b).z)
78 #define sub_vector(a, b) set_vector((a).x-(b).x,(a).y-(b).y,(a).z-(b).z)
79 #define add_ivector(a, b) set_ivector((a).x+(b).x,(a).y+(b).y,(a).z+(b).z)
80 #define sub_ivector(a, b) set_ivector((a).x-(b).x,(a).y-(b).y,(a).z-(b).z)
81 #define normal_vector(a) (a).r = sqrt((double)((a).x*(a).x)+(a).y*(a).y+(a).z*(a).z);
83 #define Vt(m, i) ((m).mx[(i)-1])
84 #define Mx(m, i, j) ((m).mx[(j)-1+(m).sz[1]*((i)-1)])
86 #define Mx1(m, i) ((m).mx[(i)-1])
87 #define Mx2(m, i, j) ((m).mx[(j)-1+(m).sz[1]*((i)-1)])
88 #define Mx3(m, i, j, k) ((m).mx[(k)-1+(m).sz[2]*((j)-1)+(m).sz[1]*(m).sz[2]*((i)-1)])
89 #define Mx4(m, i, j, k, l) ((m).mx[(l)-1+(m).sz[3]*((k)-1)+(m).sz[2]*(m).sz[3]*((j)-1) +\
90 (m).sz[1]*(m).sz[2]*(m).sz[3]*((i)-1)])
int * get_imatrix(imatrix a,...)
void copy_matrix(matrix a, matrix b)
void copy_imatrix(imatrix a, imatrix b)
vector unit_vector(vector a)
void print_imatrix(FILE *fp, imatrix a)
void free_imatrix(imatrix *a)
matrix make_matrix1(int n)
vector unit_ivector(ivector a)
matrix add_matrix(matrix a, matrix b)
matrix sub_matrix(matrix a, matrix b)
matrix make_matrix2(int n, int m)
ivector f2ivector(vector a)
ivector set_ivector(int x, int y, int z)
vector i2vector(ivector a)
vector ex_vector(vector a, vector b)
vector set_vector(double x, double y, double z)
matrix minimum2(matrix a, matrix x)
void clear_matrix(matrix *a)
matrix decompQR(matrix xx, imatrix col)
imatrix sub_imatrix(imatrix a, imatrix b)
imatrix add_imatrix(imatrix a, imatrix b)
double * get_matrix(matrix a,...)
void free_matrix(matrix *a)
imatrix mlt_imatrix(imatrix a, imatrix b)
void clear_imatrix(imatrix *a)
imatrix make_imatrix2(int n, int m)
matrix mlt_matrix(matrix a, matrix b)
matrix make_matrix(int n, int *sz)
matrix invrU_matrix(matrix x)
imatrix make_imatrix(int n, int *sz)
matrix trans_matrix(matrix a)
void print_matrix(FILE *fp, matrix a)
imatrix make_imatrix1(int n)
int * sz
各次元の要素数 sz[0]?sz[n-1]
int r
全要素数 sz[0]+sz[1]+...+sz[n-1]
double * mx
要素 mx[0]?mx[r-1]
int * sz
各次元の要素数 sz[0]?sz[n-1]
int r
全要素数 sz[0]+sz[1]+...+sz[n-1]