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 #ifndef MAT3_H_INCLUDED
00028 #define MAT3_H_INCLUDED
00029
00030 #include "utility.h"
00031
00032 struct kmVec3;
00033 struct kmQuaternion;
00034
00035 typedef struct kmMat3{
00036 kmScalar mat[9];
00037 } kmMat3;
00038
00039 #ifdef __cplusplus
00040 extern "C" {
00041 #endif
00042
00043 kmMat3* kmMat3Fill(kmMat3* pOut, const kmScalar* pMat);
00044 kmMat3* kmMat3Adjugate(kmMat3* pOut, const kmMat3* pIn);
00045 kmMat3* kmMat3Identity(kmMat3* pOut);
00046 kmMat3* kmMat3Inverse(kmMat3* pOut, const kmScalar pDeterminate, const kmMat3* pM);
00047 int kmMat3IsIdentity(const kmMat3* pIn);
00048 kmMat3* kmMat3Transpose(kmMat3* pOut, const kmMat3* pIn);
00049 kmScalar kmMat3Determinant(const kmMat3* pIn);
00050 kmMat3* kmMat3Multiply(kmMat3* pOut, const kmMat3* pM1, const kmMat3* pM2);
00051 kmMat3* kmMat3ScalarMultiply(kmMat3* pOut, const kmMat3* pM, const kmScalar pFactor);
00052
00053 kmMat3* kmMat3Assign(kmMat3* pOut, const kmMat3* pIn);
00054 int kmMat3AreEqual(const kmMat3* pM1, const kmMat3* pM2);
00055
00056 kmMat3* kmMat3Rotation(kmMat3* pOut, const kmScalar radians);
00057 kmMat3* kmMat3Scaling(kmMat3* pOut, const kmScalar x, const kmScalar y);
00058 kmMat3* kmMat3Translation(kmMat3* pOut, const kmScalar x, const kmScalar y);
00059
00060 #ifdef __cplusplus
00061 }
00062 #endif
00063 #endif // MAT3_H_INCLUDED
00064