35 void copy(
const SkelMat3& m);
41 SkelMat3(
const SkelVec3& x,
const SkelVec3& y,
const SkelVec3& z);
42 SkelMat3(
const float *mat[3]);
50 operator float *()
const;
52 float *operator[](
int index);
53 float *operator[](
int index)
const;
55 void GetEulerAngles(
float *vec)
const;
56 void GetScale(
float *vec)
const;
57 bool IsOrthonormal()
const;
60 void Multiply(
const float mat1[3][3],
const float mat2[3][3]);
63 SkelVec3 TransformVector(
const SkelVec3 *skel);
69 VectorCopy(x, val[0]);
70 VectorCopy(y, val[1]);
71 VectorCopy(z, val[2]);
74inline SkelMat3::SkelMat3(
const float *mat[3])
76 memcpy(&val, mat,
sizeof(val));
79inline SkelMat3::SkelMat3()
84inline void SkelMat3::copy(
const SkelMat3& m)
89inline void SkelMat3::MakeZero()
94inline void SkelMat3::MakeIdentity()
104 return (SkelVec3 *)&val[0];
109 return (SkelVec3 *)&val[1];
114 return (SkelVec3 *)&val[2];
117inline SkelMat3::operator
float *()
122inline SkelMat3::operator
float *()
const
124 return (
float *)&val[0][0];
127inline float *SkelMat3::operator[](
int index)
132inline float *SkelMat3::operator[](
int index)
const
134 return (
float *)val[index];
137inline void SkelMat3::GetEulerAngles(
float *vec)
const
139 MatrixToEulerAngles(val, vec);
142inline void SkelMat3::GetScale(
float *vec)
const
147inline bool SkelMat3::IsOrthonormal()
const
153inline bool SkelMat3::IsValid()
const
159inline void SkelMat3::Multiply(
const float mat1[3][3],
const float mat2[3][3])
161 MatrixMultiply(mat1, mat2, val);
164inline float SkelMat3::det()
const
166 return (val[2][1] * val[1][0] - val[2][0] * val[1][1]) * val[0][2]
167 + (val[1][1] * val[2][2] - val[1][2] * val[2][1]) * val[0][0]
168 - (val[2][2] * val[1][0] - val[1][2] * val[2][0]) * val[0][1];
171inline float SkelMat3::trace()
const
173 return val[0][0] + val[1][1] + val[2][2];
179 MatrixTransformVector(*skel, val, out);
183inline void SkelMat3::Transpose()
186 TransposeMatrix(val, out.val);
187 memcpy(val, out,
sizeof(SkelMat3));
Definition SkelMat3.h:192
Definition SkelVec3.h:197