29 #ifndef __JOINTTRANSFORM_H__
30 #define __JOINTTRANSFORM_H__
92 mat[0 * 4 + 0] = m[0][0];
93 mat[0 * 4 + 1] = m[1][0];
94 mat[0 * 4 + 2] = m[2][0];
95 mat[1 * 4 + 0] = m[0][1];
96 mat[1 * 4 + 1] = m[1][1];
97 mat[1 * 4 + 2] = m[2][1];
98 mat[2 * 4 + 0] = m[0][2];
99 mat[2 * 4 + 1] = m[1][2];
100 mat[2 * 4 + 2] = m[2][2];
104 mat[0 * 4 + 3] = t[0];
105 mat[1 * 4 + 3] = t[1];
106 mat[2 * 4 + 3] = t[2];
110 return idVec3(
mat[0 * 4 + 0] * v[0] +
mat[0 * 4 + 1] * v[1] +
mat[0 * 4 + 2] * v[2],
111 mat[1 * 4 + 0] * v[0] +
mat[1 * 4 + 1] * v[1] +
mat[1 * 4 + 2] * v[2],
112 mat[2 * 4 + 0] * v[0] +
mat[2 * 4 + 1] * v[1] +
mat[2 * 4 + 2] * v[2] );
116 return idVec3(
mat[0 * 4 + 0] * v[0] +
mat[0 * 4 + 1] * v[1] +
mat[0 * 4 + 2] * v[2] +
mat[0 * 4 + 3] * v[3],
117 mat[1 * 4 + 0] * v[0] +
mat[1 * 4 + 1] * v[1] +
mat[1 * 4 + 2] * v[2] +
mat[1 * 4 + 3] * v[3],
118 mat[2 * 4 + 0] * v[0] +
mat[2 * 4 + 1] * v[1] +
mat[2 * 4 + 2] * v[2] +
mat[2 * 4 + 3] * v[3] );
124 dst[0] =
mat[0 * 4 + 0] * a.
mat[0 * 4 + 0] +
mat[1 * 4 + 0] * a.
mat[0 * 4 + 1] +
mat[2 * 4 + 0] * a.
mat[0 * 4 + 2];
125 dst[1] =
mat[0 * 4 + 0] * a.
mat[1 * 4 + 0] +
mat[1 * 4 + 0] * a.
mat[1 * 4 + 1] +
mat[2 * 4 + 0] * a.
mat[1 * 4 + 2];
126 dst[2] =
mat[0 * 4 + 0] * a.
mat[2 * 4 + 0] +
mat[1 * 4 + 0] * a.
mat[2 * 4 + 1] +
mat[2 * 4 + 0] * a.
mat[2 * 4 + 2];
127 mat[0 * 4 + 0] = dst[0];
128 mat[1 * 4 + 0] = dst[1];
129 mat[2 * 4 + 0] = dst[2];
131 dst[0] =
mat[0 * 4 + 1] * a.
mat[0 * 4 + 0] +
mat[1 * 4 + 1] * a.
mat[0 * 4 + 1] +
mat[2 * 4 + 1] * a.
mat[0 * 4 + 2];
132 dst[1] =
mat[0 * 4 + 1] * a.
mat[1 * 4 + 0] +
mat[1 * 4 + 1] * a.
mat[1 * 4 + 1] +
mat[2 * 4 + 1] * a.
mat[1 * 4 + 2];
133 dst[2] =
mat[0 * 4 + 1] * a.
mat[2 * 4 + 0] +
mat[1 * 4 + 1] * a.
mat[2 * 4 + 1] +
mat[2 * 4 + 1] * a.
mat[2 * 4 + 2];
134 mat[0 * 4 + 1] = dst[0];
135 mat[1 * 4 + 1] = dst[1];
136 mat[2 * 4 + 1] = dst[2];
138 dst[0] =
mat[0 * 4 + 2] * a.
mat[0 * 4 + 0] +
mat[1 * 4 + 2] * a.
mat[0 * 4 + 1] +
mat[2 * 4 + 2] * a.
mat[0 * 4 + 2];
139 dst[1] =
mat[0 * 4 + 2] * a.
mat[1 * 4 + 0] +
mat[1 * 4 + 2] * a.
mat[1 * 4 + 1] +
mat[2 * 4 + 2] * a.
mat[1 * 4 + 2];
140 dst[2] =
mat[0 * 4 + 2] * a.
mat[2 * 4 + 0] +
mat[1 * 4 + 2] * a.
mat[2 * 4 + 1] +
mat[2 * 4 + 2] * a.
mat[2 * 4 + 2];
141 mat[0 * 4 + 2] = dst[0];
142 mat[1 * 4 + 2] = dst[1];
143 mat[2 * 4 + 2] = dst[2];
145 dst[0] =
mat[0 * 4 + 3] * a.
mat[0 * 4 + 0] +
mat[1 * 4 + 3] * a.
mat[0 * 4 + 1] +
mat[2 * 4 + 3] * a.
mat[0 * 4 + 2];
146 dst[1] =
mat[0 * 4 + 3] * a.
mat[1 * 4 + 0] +
mat[1 * 4 + 3] * a.
mat[1 * 4 + 1] +
mat[2 * 4 + 3] * a.
mat[1 * 4 + 2];
147 dst[2] =
mat[0 * 4 + 3] * a.
mat[2 * 4 + 0] +
mat[1 * 4 + 3] * a.
mat[2 * 4 + 1] +
mat[2 * 4 + 3] * a.
mat[2 * 4 + 2];
148 mat[0 * 4 + 3] = dst[0];
149 mat[1 * 4 + 3] = dst[1];
150 mat[2 * 4 + 3] = dst[2];
152 mat[0 * 4 + 3] += a.
mat[0 * 4 + 3];
153 mat[1 * 4 + 3] += a.
mat[1 * 4 + 3];
154 mat[2 * 4 + 3] += a.
mat[2 * 4 + 3];
162 mat[0 * 4 + 3] -= a.
mat[0 * 4 + 3];
163 mat[1 * 4 + 3] -= a.
mat[1 * 4 + 3];
164 mat[2 * 4 + 3] -= a.
mat[2 * 4 + 3];
166 dst[0] =
mat[0 * 4 + 0] * a.
mat[0 * 4 + 0] +
mat[1 * 4 + 0] * a.
mat[1 * 4 + 0] +
mat[2 * 4 + 0] * a.
mat[2 * 4 + 0];
167 dst[1] =
mat[0 * 4 + 0] * a.
mat[0 * 4 + 1] +
mat[1 * 4 + 0] * a.
mat[1 * 4 + 1] +
mat[2 * 4 + 0] * a.
mat[2 * 4 + 1];
168 dst[2] =
mat[0 * 4 + 0] * a.
mat[0 * 4 + 2] +
mat[1 * 4 + 0] * a.
mat[1 * 4 + 2] +
mat[2 * 4 + 0] * a.
mat[2 * 4 + 2];
169 mat[0 * 4 + 0] = dst[0];
170 mat[1 * 4 + 0] = dst[1];
171 mat[2 * 4 + 0] = dst[2];
173 dst[0] =
mat[0 * 4 + 1] * a.
mat[0 * 4 + 0] +
mat[1 * 4 + 1] * a.
mat[1 * 4 + 0] +
mat[2 * 4 + 1] * a.
mat[2 * 4 + 0];
174 dst[1] =
mat[0 * 4 + 1] * a.
mat[0 * 4 + 1] +
mat[1 * 4 + 1] * a.
mat[1 * 4 + 1] +
mat[2 * 4 + 1] * a.
mat[2 * 4 + 1];
175 dst[2] =
mat[0 * 4 + 1] * a.
mat[0 * 4 + 2] +
mat[1 * 4 + 1] * a.
mat[1 * 4 + 2] +
mat[2 * 4 + 1] * a.
mat[2 * 4 + 2];
176 mat[0 * 4 + 1] = dst[0];
177 mat[1 * 4 + 1] = dst[1];
178 mat[2 * 4 + 1] = dst[2];
180 dst[0] =
mat[0 * 4 + 2] * a.
mat[0 * 4 + 0] +
mat[1 * 4 + 2] * a.
mat[1 * 4 + 0] +
mat[2 * 4 + 2] * a.
mat[2 * 4 + 0];
181 dst[1] =
mat[0 * 4 + 2] * a.
mat[0 * 4 + 1] +
mat[1 * 4 + 2] * a.
mat[1 * 4 + 1] +
mat[2 * 4 + 2] * a.
mat[2 * 4 + 1];
182 dst[2] =
mat[0 * 4 + 2] * a.
mat[0 * 4 + 2] +
mat[1 * 4 + 2] * a.
mat[1 * 4 + 2] +
mat[2 * 4 + 2] * a.
mat[2 * 4 + 2];
183 mat[0 * 4 + 2] = dst[0];
184 mat[1 * 4 + 2] = dst[1];
185 mat[2 * 4 + 2] = dst[2];
187 dst[0] =
mat[0 * 4 + 3] * a.
mat[0 * 4 + 0] +
mat[1 * 4 + 3] * a.
mat[1 * 4 + 0] +
mat[2 * 4 + 3] * a.
mat[2 * 4 + 0];
188 dst[1] =
mat[0 * 4 + 3] * a.
mat[0 * 4 + 1] +
mat[1 * 4 + 3] * a.
mat[1 * 4 + 1] +
mat[2 * 4 + 3] * a.
mat[2 * 4 + 1];
189 dst[2] =
mat[0 * 4 + 3] * a.
mat[0 * 4 + 2] +
mat[1 * 4 + 3] * a.
mat[1 * 4 + 2] +
mat[2 * 4 + 3] * a.
mat[2 * 4 + 2];
190 mat[0 * 4 + 3] = dst[0];
191 mat[1 * 4 + 3] = dst[1];
192 mat[2 * 4 + 3] = dst[2];
200 for ( i = 0; i < 12; i++ ) {
201 if (
mat[i] != a.
mat[i] ) {
211 for ( i = 0; i < 12; i++ ) {
229 mat[0 * 4 + 1],
mat[1 * 4 + 1],
mat[2 * 4 + 1],
230 mat[0 * 4 + 2],
mat[1 * 4 + 2],
mat[2 * 4 + 2] );
idJointMat & operator/=(const idJointMat &a)
bool operator==(const idJointMat &a) const
bool Compare(const idJointMat &a) const
void SetTranslation(const idVec3 &t)
void SetRotation(const idMat3 &m)
idVec3 ToVec3(void) const
static float Fabs(float f)
const float * ToFloatPtr(void) const
idJointQuat ToJointQuat(void) const
GLubyte GLubyte GLubyte a
idMat3 ToMat3(void) const
idVec3 operator*(const idVec3 &v) const
bool operator!=(const idJointMat &a) const
idJointMat & operator*=(const idJointMat &a)