4 #ifndef __AUDIO_MATRIX_H__INCLUDED__
5 #define __AUDIO_MATRIX_H__INCLUDED__
17 TMatrix3(T m11, T m12, T m13, T m21, T m22, T m23, T m31, T m32, T m33)
19 m[0][0] = m11;
m[0][1] = m12;
m[0][2] = m13;
20 m[1][0] = m21;
m[1][1] = m22;
m[1][2] = m23;
21 m[2][0] = m31;
m[2][1] = m32;
m[2][2] = m33;
25 m[0][0] = s;
m[0][1] = 0;
m[0][2] = 0;
26 m[1][0] = 0;
m[1][1] = s;
m[1][2] = 0;
27 m[2][0] = 0;
m[2][1] = 0;
m[2][2] = s;
33 m[0][0] = o.
m[0][0];
m[0][1] = o.
m[0][1];
m[0][2] = o.
m[0][2];
34 m[1][0] = o.
m[1][0];
m[1][1] = o.
m[1][1];
m[1][2] = o.
m[1][2];
35 m[2][0] = o.
m[2][0];
m[2][1] = o.
m[2][1];
m[2][2] = o.
m[2][2];
41 m[0][0] = c1.
x;
m[0][1] = c2.
x;
m[0][2] = c3.
x;
42 m[1][0] = c1.
y;
m[1][1] = c2.
y;
m[1][2] = c3.
y;
43 m[2][0] = c1.
z;
m[2][1] = c2.
z;
m[2][2] = c3.
z;
49 m[0][0] = o.
m[0][0];
m[0][1] = o.
m[0][1];
m[0][2] = o.
m[0][2];
50 m[1][0] = o.
m[1][0];
m[1][1] = o.
m[1][1];
m[1][2] = o.
m[1][2];
51 m[2][0] = o.
m[2][0];
m[2][1] = o.
m[2][1];
m[2][2] = o.
m[2][2];
57 m[0][0] += o.
m[0][0];
m[0][1] += o.
m[0][1];
m[0][2] += o.
m[0][2];
58 m[1][0] += o.
m[1][0];
m[1][1] += o.
m[1][1];
m[1][2] += o.
m[1][2];
59 m[2][0] += o.
m[2][0];
m[2][1] += o.
m[2][1];
m[2][2] += o.
m[2][2];
65 m[0][0] -= o.
m[0][0];
m[0][1] -= o.
m[0][1];
m[0][2] -= o.
m[0][2];
66 m[1][0] -= o.
m[1][0];
m[1][1] -= o.
m[1][1];
m[1][2] -= o.
m[1][2];
67 m[2][0] -= o.
m[2][0];
m[2][1] -= o.
m[2][1];
m[2][2] -= o.
m[2][2];
73 #define DOT(m,om,r,c) (m[r][0]*om[0][c] + m[r][1]*om[1][c] + m[r][2]*om[2][c])
75 rv.
m[0][0] =
DOT(
m,o.
m,0,0);
76 rv.
m[0][1] =
DOT(
m,o.
m,0,1);
77 rv.
m[0][2] =
DOT(
m,o.
m,0,2);
78 rv.
m[1][0] =
DOT(
m,o.
m,1,0);
79 rv.
m[1][1] =
DOT(
m,o.
m,1,1);
80 rv.
m[1][2] =
DOT(
m,o.
m,1,2);
81 rv.
m[2][0] =
DOT(
m,o.
m,2,0);
82 rv.
m[2][1] =
DOT(
m,o.
m,2,1);
83 rv.
m[2][2] =
DOT(
m,o.
m,2,2);
90 m[0][0] *= t;
m[0][1] *= t;
m[0][2] *= t;
91 m[1][0] *= t;
m[1][1] *= t;
m[1][2] *= t;
92 m[2][0] *= t;
m[2][1] *= t;
m[2][2] *= t;
111 m[0][0]+o.
m[0][0],
m[0][1]+o.
m[0][1],
m[0][2]+o.
m[0][2],
112 m[1][0]+o.
m[1][0],
m[1][1]+o.
m[1][1],
m[1][2]+o.
m[1][2],
113 m[2][0]+o.
m[2][0],
m[2][1]+o.
m[2][1],
m[2][2]+o.
m[2][2]
120 m[0][0]-o.
m[0][0],
m[0][1]-o.
m[0][1],
m[0][2]-o.
m[0][2],
121 m[1][0]-o.
m[1][0],
m[1][1]-o.
m[1][1],
m[1][2]-o.
m[1][2],
122 m[2][0]-o.
m[2][0],
m[2][1]-o.
m[2][1],
m[2][2]-o.
m[2][2]
128 #define DOT(m,om,r,c) (m[r][0]*om[0][c] + m[r][1]*om[1][c] + m[r][2]*om[2][c])
130 DOT(
m,o.
m,0,0),
DOT(
m,o.
m,0,1),
DOT(
m,o.
m,0,2),
131 DOT(
m,o.
m,1,0),
DOT(
m,o.
m,1,1),
DOT(
m,o.
m,1,2),
132 DOT(
m,o.
m,2,0),
DOT(
m,o.
m,2,1),
DOT(
m,o.
m,2,2)
139 return (*
this) * other.
inverse();
145 m[0][0]*t,
m[0][1]*t,
m[0][2]*t,
146 m[1][0]*t,
m[1][1]*t,
m[1][2]*t,
147 m[2][0]*t,
m[2][1]*t,
m[2][2]*t
153 return (*
this) * (T(1) / t);
160 m[0][0]*t.
x +
m[0][1]*t.
y +
m[0][2]*t.
z,
161 m[1][0]*t.
x +
m[1][1]*t.
y +
m[1][2]*t.
z,
162 m[2][0]*t.
x +
m[2][1]*t.
y +
m[2][2]*t.
z
177 +
m[0][0] *
m[1][1] *
m[2][2]
178 +
m[1][0] *
m[2][1] *
m[0][2]
179 +
m[2][0] *
m[0][1] *
m[1][2]
181 -
m[0][2] *
m[1][1] *
m[2][0]
182 -
m[1][2] *
m[2][1] *
m[0][0]
183 -
m[2][2] *
m[0][1] *
m[1][0];
184 float idet = T(1) / det;
186 rv.
m[0][0] =+(m[1][1] * m[2][2] - m[1][2] * m[2][1]) * idet;
187 rv.
m[0][1] =-(m[1][0] * m[2][2] - m[1][2] * m[2][0]) * idet;
188 rv.
m[0][2] =+(m[1][0] * m[2][1] - m[1][1] * m[2][0]) * idet;
190 rv.
m[1][0] =-(m[0][1] * m[2][2] - m[0][2] * m[2][1]) * idet;
191 rv.
m[1][1] =+(m[0][0] * m[2][2] - m[0][2] * m[2][0]) * idet;
192 rv.
m[1][2] =-(m[0][0] * m[2][1] - m[0][1] * m[2][0]) * idet;
194 rv.
m[2][0] =+(m[0][1] * m[1][2] - m[0][2] * m[1][1]) * idet;
195 rv.
m[2][1] =-(m[0][0] * m[1][2] - m[0][2] * m[1][0]) * idet;
196 rv.
m[2][2] =+(m[0][0] * m[1][1] - m[0][1] * m[1][0]) * idet;
204 m[0][0], m[1][0], m[2][0],
205 m[0][1], m[1][1], m[2][1],
206 m[0][2], m[1][2], m[2][2]
213 #endif//__AUDIO_VECTOR_H__INCLUDED__