32 Matrix3x3(
float m00,
float m01,
float m02,
float m10,
float m11,
float m12,
float m20,
float m21,
float m22)
34 m[0][0] = m00; m[0][1] = m01; m[0][2] = m02;
35 m[1][0] = m10; m[1][1] = m11; m[1][2] = m12;
36 m[2][0] = m20; m[2][1] = m21; m[2][2] = m22;
43 void Set(
float m00,
float m01,
float m02,
float m10,
float m11,
float m12,
float m20,
float m21,
float m22)
45 m[0][0] = m00; m[0][1] = m01; m[0][2] = m02;
46 m[1][0] = m10; m[1][1] = m11; m[1][2] = m12;
47 m[2][0] = m20; m[2][1] = m21; m[2][2] = m22;
51 void SetScale(
const D3DXVECTOR3& p) { m[0][0] = p.x; m[1][1] = p.y; m[2][2] = p.z; }
54 void SetScale(
float sx,
float sy,
float sz) { m[0][0] = sx; m[1][1] = sy; m[2][2] = sz; }
57 void Scale(
const D3DXVECTOR3& p)
59 m[0][0] *= p.x; m[0][1] *= p.x; m[0][2] *= p.x;
60 m[1][0] *= p.y; m[1][1] *= p.y; m[1][2] *= p.y;
61 m[2][0] *= p.z; m[2][1] *= p.z; m[2][2] *= p.z;
65 void Scale(
float sx,
float sy,
float sz)
67 m[0][0] *= sx; m[0][1] *= sx; m[0][2] *= sx;
68 m[1][0] *= sy; m[1][1] *= sy; m[1][2] *= sy;
69 m[2][0] *= sz; m[2][1] *= sz; m[2][2] *= sz;
77 void GetRow(
const DWORD r, D3DXVECTOR3& p)
const { p.x = m[r][0]; p.y = m[r][1]; p.z = m[r][2]; }
79 const D3DXVECTOR3&
GetRow(
const DWORD r)
const {
return *(
const D3DXVECTOR3*)&m[r][0]; }
81 D3DXVECTOR3&
GetRow(
const DWORD r) {
return *(D3DXVECTOR3*)&m[r][0]; }
83 void SetRow(
const DWORD r,
const D3DXVECTOR3& p) { m[r][0] = p.x; m[r][1] = p.y; m[r][2] = p.z; }
85 void GetCol(
const DWORD c, D3DXVECTOR3& p)
const { p.x = m[0][c]; p.y = m[1][c]; p.z = m[2][c]; }
87 void SetCol(
const DWORD c,
const D3DXVECTOR3& p) { m[0][c] = p.x; m[1][c] = p.y; m[2][c] = p.z; }
90 float Trace()
const {
return m[0][0] + m[1][1] + m[2][2]; }
122 m[0][0] = -m[0][0]; m[0][1] = -m[0][1]; m[0][2] = -m[0][2];
123 m[1][0] = -m[1][0]; m[1][1] = -m[1][1]; m[1][2] = -m[1][2];
124 m[2][0] = -m[2][0]; m[2][1] = -m[2][1]; m[2][2] = -m[2][2];
130 m[0][0] = -mat.m[0][0]; m[0][1] = -mat.m[0][1]; m[0][2] = -mat.m[0][2];
131 m[1][0] = -mat.m[1][0]; m[1][1] = -mat.m[1][1]; m[1][2] = -mat.m[1][2];
132 m[2][0] = -mat.m[2][0]; m[2][1] = -mat.m[2][1]; m[2][2] = -mat.m[2][2];
138 m[0][0] += mat.m[0][0]; m[0][1] += mat.m[0][1]; m[0][2] += mat.m[0][2];
139 m[1][0] += mat.m[1][0]; m[1][1] += mat.m[1][1]; m[1][2] += mat.m[1][2];
140 m[2][0] += mat.m[2][0]; m[2][1] += mat.m[2][1]; m[2][2] += mat.m[2][2];
146 m[0][0] -= mat.m[0][0]; m[0][1] -= mat.m[0][1]; m[0][2] -= mat.m[0][2];
147 m[1][0] -= mat.m[1][0]; m[1][1] -= mat.m[1][1]; m[1][2] -= mat.m[1][2];
148 m[2][0] -= mat.m[2][0]; m[2][1] -= mat.m[2][1]; m[2][2] -= mat.m[2][2];
153 m[0][0] = a.m[0][0] + b.m[0][0] * s;
154 m[0][1] = a.m[0][1] + b.m[0][1] * s;
155 m[0][2] = a.m[0][2] + b.m[0][2] * s;
157 m[1][0] = a.m[1][0] + b.m[1][0] * s;
158 m[1][1] = a.m[1][1] + b.m[1][1] * s;
159 m[1][2] = a.m[1][2] + b.m[1][2] * s;
161 m[2][0] = a.m[2][0] + b.m[2][0] * s;
162 m[2][1] = a.m[2][1] + b.m[2][1] * s;
163 m[2][2] = a.m[2][2] + b.m[2][2] * s;
168 m[0][0] += a.m[0][0] * s; m[0][1] += a.m[0][1] * s; m[0][2] += a.m[0][2] * s;
169 m[1][0] += a.m[1][0] * s; m[1][1] += a.m[1][1] * s; m[1][2] += a.m[1][2] * s;
170 m[2][0] += a.m[2][0] * s; m[2][1] += a.m[2][1] * s; m[2][2] += a.m[2][2] * s;
176 m[0][0] = a.m[0][0] * s; m[0][1] = a.m[0][1] * s; m[0][2] = a.m[0][2] * s;
177 m[1][0] = a.m[1][0] * s; m[1][1] = a.m[1][1] * s; m[1][2] = a.m[1][2] * s;
178 m[2][0] = a.m[2][0] * s; m[2][1] = a.m[2][1] * s; m[2][2] = a.m[2][2] * s;
183 m[0][0] = a.m[0][0] + b.m[0][0]; m[0][1] = a.m[0][1] + b.m[0][1]; m[0][2] = a.m[0][2] + b.m[0][2];
184 m[1][0] = a.m[1][0] + b.m[1][0]; m[1][1] = a.m[1][1] + b.m[1][1]; m[1][2] = a.m[1][2] + b.m[1][2];
185 m[2][0] = a.m[2][0] + b.m[2][0]; m[2][1] = a.m[2][1] + b.m[2][1]; m[2][2] = a.m[2][2] + b.m[2][2];
190 m[0][0] = a.m[0][0] - b.m[0][0]; m[0][1] = a.m[0][1] - b.m[0][1]; m[0][2] = a.m[0][2] - b.m[0][2];
191 m[1][0] = a.m[1][0] - b.m[1][0]; m[1][1] = a.m[1][1] - b.m[1][1]; m[1][2] = a.m[1][2] - b.m[1][2];
192 m[2][0] = a.m[2][0] - b.m[2][0]; m[2][1] = a.m[2][1] - b.m[2][1]; m[2][2] = a.m[2][2] - b.m[2][2];
198 m[0][0] = a.m[0][0] * b.m[0][0] + a.m[0][1] * b.m[1][0] + a.m[0][2] * b.m[2][0];
199 m[0][1] = a.m[0][0] * b.m[0][1] + a.m[0][1] * b.m[1][1] + a.m[0][2] * b.m[2][1];
200 m[0][2] = a.m[0][0] * b.m[0][2] + a.m[0][1] * b.m[1][2] + a.m[0][2] * b.m[2][2];
201 m[1][0] = a.m[1][0] * b.m[0][0] + a.m[1][1] * b.m[1][0] + a.m[1][2] * b.m[2][0];
202 m[1][1] = a.m[1][0] * b.m[0][1] + a.m[1][1] * b.m[1][1] + a.m[1][2] * b.m[2][1];
203 m[1][2] = a.m[1][0] * b.m[0][2] + a.m[1][1] * b.m[1][2] + a.m[1][2] * b.m[2][2];
204 m[2][0] = a.m[2][0] * b.m[0][0] + a.m[2][1] * b.m[1][0] + a.m[2][2] * b.m[2][0];
205 m[2][1] = a.m[2][0] * b.m[0][1] + a.m[2][1] * b.m[1][1] + a.m[2][2] * b.m[2][1];
206 m[2][2] = a.m[2][0] * b.m[0][2] + a.m[2][1] * b.m[1][2] + a.m[2][2] * b.m[2][2];
212 m[0][0] = a.m[0][0] * b.m[0][0] + a.m[1][0] * b.m[1][0] + a.m[2][0] * b.m[2][0];
213 m[0][1] = a.m[0][0] * b.m[0][1] + a.m[1][0] * b.m[1][1] + a.m[2][0] * b.m[2][1];
214 m[0][2] = a.m[0][0] * b.m[0][2] + a.m[1][0] * b.m[1][2] + a.m[2][0] * b.m[2][2];
215 m[1][0] = a.m[0][1] * b.m[0][0] + a.m[1][1] * b.m[1][0] + a.m[2][1] * b.m[2][0];
216 m[1][1] = a.m[0][1] * b.m[0][1] + a.m[1][1] * b.m[1][1] + a.m[2][1] * b.m[2][1];
217 m[1][2] = a.m[0][1] * b.m[0][2] + a.m[1][1] * b.m[1][2] + a.m[2][1] * b.m[2][2];
218 m[2][0] = a.m[0][2] * b.m[0][0] + a.m[1][2] * b.m[1][0] + a.m[2][2] * b.m[2][0];
219 m[2][1] = a.m[0][2] * b.m[0][1] + a.m[1][2] * b.m[1][1] + a.m[2][2] * b.m[2][1];
220 m[2][2] = a.m[0][2] * b.m[0][2] + a.m[1][2] * b.m[1][2] + a.m[2][2] * b.m[2][2];
226 m[0][0] = a.m[0][0] * b.m[0][0] + a.m[0][1] * b.m[0][1] + a.m[0][2] * b.m[0][2];
227 m[0][1] = a.m[0][0] * b.m[1][0] + a.m[0][1] * b.m[1][1] + a.m[0][2] * b.m[1][2];
228 m[0][2] = a.m[0][0] * b.m[2][0] + a.m[0][1] * b.m[2][1] + a.m[0][2] * b.m[2][2];
229 m[1][0] = a.m[1][0] * b.m[0][0] + a.m[1][1] * b.m[0][1] + a.m[1][2] * b.m[0][2];
230 m[1][1] = a.m[1][0] * b.m[1][0] + a.m[1][1] * b.m[1][1] + a.m[1][2] * b.m[1][2];
231 m[1][2] = a.m[1][0] * b.m[2][0] + a.m[1][1] * b.m[2][1] + a.m[1][2] * b.m[2][2];
232 m[2][0] = a.m[2][0] * b.m[0][0] + a.m[2][1] * b.m[0][1] + a.m[2][2] * b.m[0][2];
233 m[2][1] = a.m[2][0] * b.m[1][0] + a.m[2][1] * b.m[1][1] + a.m[2][2] * b.m[1][2];
234 m[2][2] = a.m[2][0] * b.m[2][0] + a.m[2][1] * b.m[2][1] + a.m[2][2] * b.m[2][2];
244 void RotX(
float angle) {
float Cos = cosf(angle), Sin = sinf(angle);
Identity(); m[1][1] = m[2][2] = Cos; m[2][1] = -Sin; m[1][2] = Sin; }
250 void RotY(
float angle) {
float Cos = cosf(angle), Sin = sinf(angle);
Identity(); m[0][0] = m[2][2] = Cos; m[2][0] = Sin; m[0][2] = -Sin; }
256 void RotZ(
float angle) {
float Cos = cosf(angle), Sin = sinf(angle);
Identity(); m[0][0] = m[1][1] = Cos; m[1][0] = -Sin; m[0][1] = Sin; }
261 void RotYX(
float y,
float x);
272 m[0][0] = a.m[0][0]; m[0][1] = a.m[1][0]; m[0][2] = a.m[2][0];
273 m[1][0] = a.m[0][1]; m[1][1] = a.m[1][1]; m[1][2] = a.m[2][1];
274 m[2][0] = a.m[0][2]; m[2][1] = a.m[1][2]; m[2][2] = a.m[2][2];
280 return (m[0][0]*m[1][1]*m[2][2] + m[0][1]*m[1][2]*m[2][0] + m[0][2]*m[1][0]*m[2][1])
281 - (m[2][0]*m[1][1]*m[0][2] + m[2][1]*m[1][2]*m[0][0] + m[2][2]*m[1][0]*m[0][1]);
295 float OneOverDet = 1.0f / Det;
298 Temp.m[0][0] = +(m[1][1] * m[2][2] - m[2][1] * m[1][2]) * OneOverDet;
299 Temp.m[1][0] = -(m[1][0] * m[2][2] - m[2][0] * m[1][2]) * OneOverDet;
300 Temp.m[2][0] = +(m[1][0] * m[2][1] - m[2][0] * m[1][1]) * OneOverDet;
301 Temp.m[0][1] = -(m[0][1] * m[2][2] - m[2][1] * m[0][2]) * OneOverDet;
302 Temp.m[1][1] = +(m[0][0] * m[2][2] - m[2][0] * m[0][2]) * OneOverDet;
303 Temp.m[2][1] = -(m[0][0] * m[2][1] - m[2][0] * m[0][1]) * OneOverDet;
304 Temp.m[0][2] = +(m[0][1] * m[1][2] - m[1][1] * m[0][2]) * OneOverDet;
305 Temp.m[1][2] = -(m[0][0] * m[1][2] - m[1][0] * m[0][2]) * OneOverDet;
306 Temp.m[2][2] = +(m[0][0] * m[1][1] - m[1][0] * m[0][1]) * OneOverDet;
318 void FromQuat(
const D3DXQUATERNION &q);
319 void FromQuatL2(
const D3DXQUATERNION&q,
float l2);
326 m[0][0] + mat.m[0][0], m[0][1] + mat.m[0][1], m[0][2] + mat.m[0][2],
327 m[1][0] + mat.m[1][0], m[1][1] + mat.m[1][1], m[1][2] + mat.m[1][2],
328 m[2][0] + mat.m[2][0], m[2][1] + mat.m[2][1], m[2][2] + mat.m[2][2]);
335 m[0][0] - mat.m[0][0], m[0][1] - mat.m[0][1], m[0][2] - mat.m[0][2],
336 m[1][0] - mat.m[1][0], m[1][1] - mat.m[1][1], m[1][2] - mat.m[1][2],
337 m[2][0] - mat.m[2][0], m[2][1] - mat.m[2][1], m[2][2] - mat.m[2][2]);
344 m[0][0]*mat.m[0][0] + m[0][1]*mat.m[1][0] + m[0][2]*mat.m[2][0],
345 m[0][0]*mat.m[0][1] + m[0][1]*mat.m[1][1] + m[0][2]*mat.m[2][1],
346 m[0][0]*mat.m[0][2] + m[0][1]*mat.m[1][2] + m[0][2]*mat.m[2][2],
348 m[1][0]*mat.m[0][0] + m[1][1]*mat.m[1][0] + m[1][2]*mat.m[2][0],
349 m[1][0]*mat.m[0][1] + m[1][1]*mat.m[1][1] + m[1][2]*mat.m[2][1],
350 m[1][0]*mat.m[0][2] + m[1][1]*mat.m[1][2] + m[1][2]*mat.m[2][2],
352 m[2][0]*mat.m[0][0] + m[2][1]*mat.m[1][0] + m[2][2]*mat.m[2][0],
353 m[2][0]*mat.m[0][1] + m[2][1]*mat.m[1][1] + m[2][2]*mat.m[2][1],
354 m[2][0]*mat.m[0][2] + m[2][1]*mat.m[1][2] + m[2][2]*mat.m[2][2]);
358 D3DXVECTOR3
operator*(
const D3DXVECTOR3& v)
const;
364 m[0][0]*s, m[0][1]*s, m[0][2]*s,
365 m[1][0]*s, m[1][1]*s, m[1][2]*s,
366 m[2][0]*s, m[2][1]*s, m[2][2]*s);
373 s*mat.m[0][0], s*mat.m[0][1], s*mat.m[0][2],
374 s*mat.m[1][0], s*mat.m[1][1], s*mat.m[1][2],
375 s*mat.m[2][0], s*mat.m[2][1], s*mat.m[2][2]);
383 m[0][0]*s, m[0][1]*s, m[0][2]*s,
384 m[1][0]*s, m[1][1]*s, m[1][2]*s,
385 m[2][0]*s, m[2][1]*s, m[2][2]*s);
392 s/mat.m[0][0], s/mat.m[0][1], s/mat.m[0][2],
393 s/mat.m[1][0], s/mat.m[1][1], s/mat.m[1][2],
394 s/mat.m[2][0], s/mat.m[2][1], s/mat.m[2][2]);
400 m[0][0] += mat.m[0][0]; m[0][1] += mat.m[0][1]; m[0][2] += mat.m[0][2];
401 m[1][0] += mat.m[1][0]; m[1][1] += mat.m[1][1]; m[1][2] += mat.m[1][2];
402 m[2][0] += mat.m[2][0]; m[2][1] += mat.m[2][1]; m[2][2] += mat.m[2][2];
409 m[0][0] -= mat.m[0][0]; m[0][1] -= mat.m[0][1]; m[0][2] -= mat.m[0][2];
410 m[1][0] -= mat.m[1][0]; m[1][1] -= mat.m[1][1]; m[1][2] -= mat.m[1][2];
411 m[2][0] -= mat.m[2][0]; m[2][1] -= mat.m[2][1]; m[2][2] -= mat.m[2][2];
421 m[0][0] = TempRow.x*mat.m[0][0] + TempRow.y*mat.m[1][0] + TempRow.z*mat.m[2][0];
422 m[0][1] = TempRow.x*mat.m[0][1] + TempRow.y*mat.m[1][1] + TempRow.z*mat.m[2][1];
423 m[0][2] = TempRow.x*mat.m[0][2] + TempRow.y*mat.m[1][2] + TempRow.z*mat.m[2][2];
426 m[1][0] = TempRow.x*mat.m[0][0] + TempRow.y*mat.m[1][0] + TempRow.z*mat.m[2][0];
427 m[1][1] = TempRow.x*mat.m[0][1] + TempRow.y*mat.m[1][1] + TempRow.z*mat.m[2][1];
428 m[1][2] = TempRow.x*mat.m[0][2] + TempRow.y*mat.m[1][2] + TempRow.z*mat.m[2][2];
431 m[2][0] = TempRow.x*mat.m[0][0] + TempRow.y*mat.m[1][0] + TempRow.z*mat.m[2][0];
432 m[2][1] = TempRow.x*mat.m[0][1] + TempRow.y*mat.m[1][1] + TempRow.z*mat.m[2][1];
433 m[2][2] = TempRow.x*mat.m[0][2] + TempRow.y*mat.m[1][2] + TempRow.z*mat.m[2][2];
440 m[0][0] *= s; m[0][1] *= s; m[0][2] *= s;
441 m[1][0] *= s; m[1][1] *= s; m[1][2] *= s;
442 m[2][0] *= s; m[2][1] *= s; m[2][2] *= s;
450 m[0][0] *= s; m[0][1] *= s; m[0][2] *= s;
451 m[1][0] *= s; m[1][1] *= s; m[1][2] *= s;
452 m[2][0] *= s; m[2][1] *= s; m[2][2] *= s;
458 operator D3DXMATRIX()
const;
460 operator D3DXQUATERNION()
const;
462 const D3DXVECTOR3& operator[](
int row)
const {
return *(
const D3DXVECTOR3*)&m[row][0]; }
463 D3DXVECTOR3& operator[](
int row) {
return *(D3DXVECTOR3*)&m[row][0]; }
Matrix3x3 operator+(const Matrix3x3 &mat) const
Operator for Matrix3x3 Plus = Matrix3x3 + Matrix3x3;.
Definition: Matrix3x3.h:323
void Set(float m00, float m01, float m02, float m10, float m11, float m12, float m20, float m21, float m22)
Assign values.
Definition: Matrix3x3.h:43
void Sub(const Matrix3x3 &mat)
Sub another matrix.
Definition: Matrix3x3.h:144
void Mult(const Matrix3x3 &a, float s)
this = A * s
Definition: Matrix3x3.h:174
Matrix3x3(float m00, float m01, float m02, float m10, float m11, float m12, float m20, float m21, float m22)
Empty constructor Constructor from 9 values.
Definition: Matrix3x3.h:32
3x3 matrix.
Definition: Matrix3x3.h:24
friend Matrix3x3 operator*(float s, const Matrix3x3 &mat)
Operator for Matrix3x3 Mul = float * Matrix3x3;.
Definition: Matrix3x3.h:370
const D3DXVECTOR3 & GetRow(const DWORD r) const
Returns a row.
Definition: Matrix3x3.h:79
Matrix3x3 & operator*=(const Matrix3x3 &mat)
Operator for Matrix3x3 *= Matrix3x3.
Definition: Matrix3x3.h:416
Matrix3x3 operator*(float s) const
Operator for Matrix3x3 Mul = Matrix3x3 * float;.
Definition: Matrix3x3.h:361
void MultABt(const Matrix3x3 &a, const Matrix3x3 &b)
this = a * transpose(b)
Definition: Matrix3x3.h:224
void RotX(float angle)
Set a rotation matrix around the X axis.
Definition: Matrix3x3.h:244
different physics engine has different winding order.
Definition: EventBinding.h:32
float Trace() const
Computes the trace. The trace is the sum of the 3 diagonal components.
Definition: Matrix3x3.h:90
void RotY(float angle)
Set a rotation matrix around the Y axis.
Definition: Matrix3x3.h:250
void Zero()
Clears the matrix.
Definition: Matrix3x3.cpp:41
void Copy(const Matrix3x3 &source)
Copy from a Matrix3x3.
Definition: Matrix3x3.cpp:36
D3DXVECTOR3 & GetRow(const DWORD r)
Returns a row.
Definition: Matrix3x3.h:81
void Neg()
Negates the matrix.
Definition: Matrix3x3.h:120
void Neg(const Matrix3x3 &mat)
Neg from another matrix.
Definition: Matrix3x3.h:128
void Mac(const Matrix3x3 &a, const Matrix3x3 &b, float s)
Mac.
Definition: Matrix3x3.h:151
void Scale(float sx, float sy, float sz)
Scales from floats. Each row is multiplied by a value.
Definition: Matrix3x3.h:65
void MultAtB(const Matrix3x3 &a, const Matrix3x3 &b)
this = transpose(a) * b
Definition: Matrix3x3.h:210
void Transpose(const Matrix3x3 &a)
this = Transpose(a)
Definition: Matrix3x3.h:270
Matrix3x3 operator*(const Matrix3x3 &mat) const
Operator for Matrix3x3 Mul = Matrix3x3 * Matrix3x3;.
Definition: Matrix3x3.h:341
void Mac(const Matrix3x3 &a, float s)
Mac.
Definition: Matrix3x3.h:166
Matrix3x3 & operator-=(const Matrix3x3 &mat)
Operator for Matrix3x3 -= Matrix3x3.
Definition: Matrix3x3.h:407
void SetScale(const D3DXVECTOR3 &p)
Sets the scale from a D3DXVECTOR3. The point is put on the diagonal.
Definition: Matrix3x3.h:51
void SetRow(const DWORD r, const D3DXVECTOR3 &p)
Sets a row.
Definition: Matrix3x3.h:83
friend Matrix3x3 operator/(float s, const Matrix3x3 &mat)
Operator for Matrix3x3 Div = float / Matrix3x3;.
Definition: Matrix3x3.h:389
void SetCol(const DWORD c, const D3DXVECTOR3 &p)
Sets a column.
Definition: Matrix3x3.h:87
void Scale(const D3DXVECTOR3 &p)
Scales from a D3DXVECTOR3. Each row is multiplied by a component.
Definition: Matrix3x3.h:57
void SetScale(float sx, float sy, float sz)
Sets the scale from floats. Values are put on the diagonal.
Definition: Matrix3x3.h:54
void Add(const Matrix3x3 &mat)
Add another matrix.
Definition: Matrix3x3.h:136
void GetRow(const DWORD r, D3DXVECTOR3 &p) const
Returns a row.
Definition: Matrix3x3.h:77
Matrix3x3 & Exp(const Matrix3x3 &a)
this = exp(a)
void RotYX(float y, float x)
cy sx.sy -sy.cx RY.RX 0 cx sx sy -sx.cy cx.cy
bool IsIdentity() const
Checks for identity.
Definition: Matrix3x3.cpp:51
float Determinant() const
Compute the determinant of the matrix. We use the rule of Sarrus.
Definition: Matrix3x3.h:278
void RotZ(float angle)
Set a rotation matrix around the Z axis.
Definition: Matrix3x3.h:256
Matrix3x3 operator/(float s) const
Operator for Matrix3x3 Div = Matrix3x3 / float;.
Definition: Matrix3x3.h:379
Matrix3x3 & Rot(float angle, const D3DXVECTOR3 &axis)
Make a rotation matrix about an arbitrary axis.
Matrix3x3 & operator*=(float s)
Operator for Matrix3x3 *= float.
Definition: Matrix3x3.h:438
Matrix3x3 & operator+=(const Matrix3x3 &mat)
Operator for Matrix3x3 += Matrix3x3.
Definition: Matrix3x3.h:398
void SkewSymmetric(const D3DXVECTOR3 &a)
Makes a skew-symmetric matrix (a.k.a.
Definition: Matrix3x3.h:104
Matrix3x3 & operator/=(float s)
Operator for Matrix3x3 /= float.
Definition: Matrix3x3.h:447
Matrix3x3 & FromTo(const D3DXVECTOR3 &from, const D3DXVECTOR3 &to)
Makes a rotation matrix mapping vector "from" to vector "to".
void Identity()
Sets the identity matrix.
Definition: Matrix3x3.h:94
void Mult(const Matrix3x3 &a, const Matrix3x3 &b)
this = a * b
Definition: Matrix3x3.h:196
void GetCol(const DWORD c, D3DXVECTOR3 &p) const
Returns a column.
Definition: Matrix3x3.h:85
void Transpose()
Transpose the matrix.
Definition: Matrix3x3.cpp:68
Matrix3x3 operator-(const Matrix3x3 &mat) const
Operator for Matrix3x3 Minus = Matrix3x3 - Matrix3x3;.
Definition: Matrix3x3.h:332
Matrix3x3 & Invert()
Invert the matrix. Determinant must be different from zero, else matrix can't be inverted.
Definition: Matrix3x3.h:292