00001
00021 #ifndef __ARTOOLKITMATRIX_HEADERFILE__
00022 #define __ARTOOLKITMATRIX_HEADERFILE__
00023
00024 #include <ARToolKitPlus/config.h>
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 namespace ARToolKitPlus {
00038
00039 struct AR_EXPORT ARMat {
00040 ARFloat *m;
00041 int row;
00042 int clm;
00043 };
00044
00045 namespace Matrix {
00046
00047
00048 #define ARELEM0(mat,r,c) ((mat)->m[(r)*((mat)->clm)+(c)])
00049
00050 #define ARELEM1(mat,row,clm) ARELEM0(mat,row-1,clm-1)
00051
00052 AR_EXPORT ARMat *alloc(int row, int clm);
00053 AR_EXPORT int free(ARMat *m);
00054
00055 AR_EXPORT int dup(ARMat *dest, ARMat *source);
00056 AR_EXPORT ARMat *allocDup(ARMat *source);
00057
00058 AR_EXPORT int mul(ARMat *dest, ARMat *a, ARMat *b);
00059 AR_EXPORT int selfInv(ARMat *m);
00060
00061 }
00062
00063
00064 }
00065
00066
00067 #endif // __ARTOOLKITMATRIX_HEADERFILE__