50 v.
x = lhs.
y*rhs.
z - lhs.
z*rhs.
y;
51 v.
y = lhs.
z*rhs.
x - lhs.
x*rhs.
z;
52 v.
z = lhs.
x*rhs.
y - lhs.
y*rhs.
x;
58 const float len = sqrt(
x*
x +
y*
y +
z*
z);
59 x /= len;
y /= len;
z /= len;
75 const float theta2 = theta/2.0f;
76 const float s = sin(theta2);
86 float length = sqrt(
LenSqr());
96 float c = lhs.
w * rhs.
w + lhs.
x * rhs.
x + lhs.
y * rhs.
y + lhs.
z * rhs.
z;
98 q = lhs +
w * (-rhs - lhs);
100 q = lhs +
w * ( rhs - lhs);
177 m.a[0][0] = 0.0f; m.a[0][1] = 0.0f; m.a[0][2] = 0.0f; m.a[0][3] = 0.0f;
178 m.a[1][0] = 0.0f; m.a[1][1] = 0.0f; m.a[1][2] = 0.0f; m.a[1][3] = 0.0f;
179 m.a[2][0] = 0.0f; m.a[2][1] = 0.0f; m.a[2][2] = 0.0f; m.a[2][3] = 0.0f;
186 m.a[0][0] = 1.0f; m.a[0][1] = 0.0f; m.a[0][2] = 0.0f; m.a[0][3] = 0.0f;
187 m.a[1][0] = 0.0f; m.a[1][1] = 1.0f; m.a[1][2] = 0.0f; m.a[1][3] = 0.0f;
188 m.a[2][0] = 0.0f; m.a[2][1] = 0.0f; m.a[2][2] = 1.0f; m.a[2][3] = 0.0f;
199 m.a[0][0] = (mat.a[1][1]*mat.a[2][2] - mat.a[1][2]*mat.a[2][1]) / det;
200 m.a[1][0] = (mat.a[1][2]*mat.a[2][0] - mat.a[1][0]*mat.a[2][2]) / det;
201 m.a[2][0] = (mat.a[1][0]*mat.a[2][1] - mat.a[1][1]*mat.a[2][0]) / det;
203 m.a[0][1] = (mat.a[0][2]*mat.a[2][1] - mat.a[0][1]*mat.a[2][2]) / det;
204 m.a[1][1] = (mat.a[0][0]*mat.a[2][2] - mat.a[0][2]*mat.a[2][0]) / det;
205 m.a[2][1] = (mat.a[0][1]*mat.a[2][0] - mat.a[0][0]*mat.a[2][1]) / det;
207 m.a[0][2] = (mat.a[0][1]*mat.a[1][2] - mat.a[0][2]*mat.a[1][1]) / det;
208 m.a[1][2] = (mat.a[0][2]*mat.a[1][0] - mat.a[0][0]*mat.a[1][2]) / det;
209 m.a[2][2] = (mat.a[0][0]*mat.a[1][1] - mat.a[0][1]*mat.a[1][0]) / det;
211 m.a[0][3] = (mat.a[0][1]*mat.a[1][3]*mat.a[2][2]
212 + mat.a[0][2]*mat.a[1][1]*mat.a[2][3]
213 + mat.a[0][3]*mat.a[1][2]*mat.a[2][1]
214 - mat.a[0][1]*mat.a[1][2]*mat.a[2][3]
215 - mat.a[0][2]*mat.a[1][3]*mat.a[2][1]
216 - mat.a[0][3]*mat.a[1][1]*mat.a[2][2]) / det;
218 m.a[1][3] = (mat.a[0][0]*mat.a[1][2]*mat.a[2][3]
219 + mat.a[0][2]*mat.a[1][3]*mat.a[2][0]
220 + mat.a[0][3]*mat.a[1][0]*mat.a[2][2]
221 - mat.a[0][0]*mat.a[1][3]*mat.a[2][2]
222 - mat.a[0][2]*mat.a[1][0]*mat.a[2][3]
223 - mat.a[0][3]*mat.a[1][2]*mat.a[2][0]) / det;
225 m.a[2][3] = (mat.a[0][0]*mat.a[1][3]*mat.a[2][1]
226 + mat.a[0][1]*mat.a[1][0]*mat.a[2][3]
227 + mat.a[0][3]*mat.a[1][1]*mat.a[2][0]
228 - mat.a[0][0]*mat.a[1][1]*mat.a[2][3]
229 - mat.a[0][1]*mat.a[1][3]*mat.a[2][0]
230 - mat.a[0][3]*mat.a[1][0]*mat.a[2][1]) / det;
238 m.a[0][0] = 1.0f; m.a[0][1] = 0.0f; m.a[0][2] = 0.0f; m.a[0][3] = dx;
239 m.a[1][0] = 0.0f; m.a[1][1] = 1.0f; m.a[1][2] = 0.0f; m.a[1][3] = dy;
240 m.a[2][0] = 0.0f; m.a[2][1] = 0.0f; m.a[2][2] = 1.0f; m.a[2][3] = dz;
247 m.a[0][0] = sx; m.a[0][1] = 0.0f; m.a[0][2] = 0.0f; m.a[0][3] = 0.0f;
248 m.a[1][0] = 0.0f; m.a[1][1] = sy; m.a[1][2] = 0.0f; m.a[1][3] = 0.0f;
249 m.a[2][0] = 0.0f; m.a[2][1] = 0.0f; m.a[2][2] = sz; m.a[2][3] = 0.0f;
259 float abs = sqrt(rx*rx+ry*ry+rz*rz);
260 rx/=abs; ry/=abs; rz/=abs;
261 float c = cos(angle),
s = sin(angle);
263 m.a[0][0] = rx*rx*(1-c)+c; m.a[0][1] = rx*ry*(1-c)-rz*
s; m.a[0][2] = rx*rz*(1-c)+ry*
s; m.a[0][3] = 0.0f;
264 m.a[1][0] = ry*rx*(1-c)+rz*
s; m.a[1][1] = ry*ry*(1-c)+c; m.a[1][2] = ry*rz*(1-c)-rx*
s; m.a[1][3] = 0.0f;
265 m.a[2][0] = rz*rx*(1-c)-ry*
s; m.a[2][1] = ry*rz*(1-c)+rx*
s; m.a[2][2] = rz*rz*(1-c)+c; m.a[2][3] = 0.0f;
273 float tx = 2*transform.
rotate.
x;
274 float ty = 2*transform.
rotate.
y;
275 float tz = 2*transform.
rotate.
z;
276 float twx = tx*transform.
rotate.
w;
277 float twy = ty*transform.
rotate.
w;
278 float twz = tz*transform.
rotate.
w;
279 float txx = tx*transform.
rotate.
x;
280 float txy = ty*transform.
rotate.
x;
281 float txz = tz*transform.
rotate.
x;
282 float tyy = ty*transform.
rotate.
y;
283 float tyz = tz*transform.
rotate.
y;
284 float tzz = tz*transform.
rotate.
z;
286 m.a[0][0] = (1.0f - (tyy + tzz) ) * transform.
scale.
x;
287 m.a[0][1] = (txy - twz) * transform.
scale.
y;
288 m.a[0][2] = (txz + twy) * transform.
scale.
z;
289 m.a[1][0] = (txy + twz) * transform.
scale.
x;
290 m.a[1][1] = (1.0f - (txx + tzz) ) * transform.
scale.
y;
291 m.a[1][2] = (tyz - twx) * transform.
scale.
z;
292 m.a[2][0] = (txz - twy) * transform.
scale.
x;
293 m.a[2][1] = (tyz + twx) * transform.
scale.
y;
294 m.a[2][2] = (1.0f - (txx + tyy) ) * transform.
scale.
z;
307 float tx = 2*transform.
rotate.
x;
308 float ty = 2*transform.
rotate.
y;
309 float tz = 2*transform.
rotate.
z;
310 float twx = -tx*transform.
rotate.
w;
311 float twy = -ty*transform.
rotate.
w;
312 float twz = -tz*transform.
rotate.
w;
313 float txx = tx*transform.
rotate.
x;
314 float txy = ty*transform.
rotate.
x;
315 float txz = tz*transform.
rotate.
x;
316 float tyy = ty*transform.
rotate.
y;
317 float tyz = tz*transform.
rotate.
y;
318 float tzz = tz*transform.
rotate.
z;
320 m.a[0][0] = (1.0f - (tyy + tzz) ) / transform.
scale.
x;
321 m.a[0][1] = (txy - twz) / transform.
scale.
x;
322 m.a[0][2] = (txz + twy) / transform.
scale.
x;
323 m.a[1][0] = (txy + twz) / transform.
scale.
y;
324 m.a[1][1] = (1.0f - (txx + tzz) ) / transform.
scale.
y;
325 m.a[1][2] = (tyz - twx) / transform.
scale.
y;
326 m.a[2][0] = (txz - twy) / transform.
scale.
z;
327 m.a[2][1] = (tyz + twx) / transform.
scale.
z;
328 m.a[2][2] = (1.0f - (txx + tyy) ) / transform.
scale.
z;
333 m.a[0][3] = invtranslate.
x;
334 m.a[1][3] = invtranslate.
y;
335 m.a[2][3] = invtranslate.
z;
352 m.a[0][0] = x.
x; m.a[0][1] = x.
y; m.a[0][2] = x.
z; m.a[0][3] = -x.
x*eye.
x - x.
y*eye.
y - x.
z*eye.
z;
353 m.a[1][0] = y.
x; m.a[1][1] = y.
y; m.a[1][2] = y.
z; m.a[1][3] = -y.
x*eye.
x - y.
y*eye.
y - y.
z*eye.
z;
354 m.a[2][0] =
z.x; m.a[2][1] =
z.y; m.a[2][2] =
z.z; m.a[2][3] = -
z.x*eye.
x -
z.y*eye.
y -
z.z*eye.
z;
360 return a[0][0]*a[1][1]*a[2][2] + a[0][1]*a[1][2]*a[2][0] + a[0][2]*a[1][0]*a[2][1]
361 - a[0][0]*a[1][2]*a[2][1] - a[0][1]*a[1][0]*a[2][2] - a[0][2]*a[1][1]*a[2][0];
367 m.a[0][0] = 1.0f; m.a[0][1] = 0.0f; m.a[0][2] = 0.0f; m.a[0][3] = 0.0f;
368 m.a[1][0] = 0.0f; m.a[1][1] = 1.0f; m.a[1][2] = 0.0f; m.a[1][3] = 0.0f;
369 m.a[2][0] = 0.0f; m.a[2][1] = 0.0f; m.a[2][2] = 1.0f; m.a[2][3] = 0.0f;
370 m.a[3][0] = 0.0f; m.a[3][1] = 0.0f; m.a[3][2] = 0.0f; m.a[3][3] = 1.0f;
377 m.a[0][0] = 1.0f; m.a[0][1] = 0.0f; m.a[0][2] = 0.0f; m.a[0][3] = dx;
378 m.a[1][0] = 0.0f; m.a[1][1] = 1.0f; m.a[1][2] = 0.0f; m.a[1][3] = dy;
379 m.a[2][0] = 0.0f; m.a[2][1] = 0.0f; m.a[2][2] = 1.0f; m.a[2][3] = dz;
380 m.a[3][0] = 0.0f; m.a[3][1] = 0.0f; m.a[3][2] = 0.0f; m.a[3][3] = 1.0f;
387 m.a[0][0] = sx; m.a[0][1] = 0.0f; m.a[0][2] = 0.0f; m.a[0][3] = 0.0f;
388 m.a[1][0] = 0.0f; m.a[1][1] = sy; m.a[1][2] = 0.0f; m.a[1][3] = 0.0f;
389 m.a[2][0] = 0.0f; m.a[2][1] = 0.0f; m.a[2][2] = sz; m.a[2][3] = 0.0f;
390 m.a[3][0] = 0.0f; m.a[3][1] = 0.0f; m.a[3][2] = 0.0f; m.a[3][3] = 1.0f;
400 float abs = sqrt(rx*rx+ry*ry+rz*rz);
401 rx/=abs; ry/=abs; rz/=abs;
402 float c = cos(angle),
s = sin(angle);
404 m.a[0][0] = rx*rx*(1-c)+c; m.a[0][1] = rx*ry*(1-c)-rz*
s; m.a[0][2] = rx*rz*(1-c)+ry*
s; m.a[0][3] = 0.0f;
405 m.a[1][0] = ry*rx*(1-c)+rz*
s; m.a[1][1] = ry*ry*(1-c)+c; m.a[1][2] = ry*rz*(1-c)-rx*
s; m.a[1][3] = 0.0f;
406 m.a[2][0] = rz*rx*(1-c)-ry*
s; m.a[2][1] = ry*rz*(1-c)+rx*
s; m.a[2][2] = rz*rz*(1-c)+c; m.a[2][3] = 0.0f;
407 m.a[3][0] = 0.0f; m.a[3][1] = 0.0f; m.a[3][2] = 0.0f; m.a[3][3] = 1.0f;
436 m(0, 0) = matrix.a[0][0]; m(0, 1) = matrix.a[0][1]; m(0, 2) = matrix.a[0][2]; m(0, 3) = matrix.a[0][3];
437 m(1, 0) = matrix.a[1][0]; m(1, 1) = matrix.a[1][1]; m(1, 2) = matrix.a[1][2]; m(1, 3) = matrix.a[1][3];
438 m(2, 0) = matrix.a[2][0]; m(2, 1) = matrix.a[2][1]; m(2, 2) = matrix.a[2][2]; m(2, 3) = matrix.a[2][3];
445 const float sx = sqrt(a[0][0]*a[0][0] + a[1][0]*a[1][0] + a[2][0]*a[2][0]);
446 const float sy = sqrt(
a[0][1]*
a[0][1] +
a[1][1]*
a[1][1] +
a[2][1]*
a[2][1]);
447 const float sz = sqrt(
a[0][2]*
a[0][2] +
a[1][2]*
a[1][2] +
a[2][2]*
a[2][2]);
455 const float cos_angle = 0.5f * (rot.a[0][0] + rot.a[1][1] + rot.a[2][2] - 1.0f);
457 const float rdx = rot.a[2][1] - rot.a[1][2];
458 const float rdy = rot.a[0][2] - rot.a[2][0];
459 const float rdz = rot.a[1][0] - rot.a[0][1];
460 const float det = sqrt(rdx*rdx + rdy*rdy + rdz*rdz);
462 const float rx = (rot.a[2][1] - rot.a[1][2]) / det;
463 const float ry = (rot.a[0][2] - rot.a[2][0]) / det;
464 const float rz = (rot.a[1][0] - rot.a[0][1]) / det;
482 m(0,0) = lhs(0,0)*rhs(0,0) + lhs(0,1)*rhs(1,0) + lhs(0,2)*rhs(2,0);
483 m(1,0) = lhs(1,0)*rhs(0,0) + lhs(1,1)*rhs(1,0) + lhs(1,2)*rhs(2,0);
484 m(2,0) = lhs(2,0)*rhs(0,0) + lhs(2,1)*rhs(1,0) + lhs(2,2)*rhs(2,0);
486 m(0,1) = lhs(0,0)*rhs(0,1) + lhs(0,1)*rhs(1,1) + lhs(0,2)*rhs(2,1);
487 m(1,1) = lhs(1,0)*rhs(0,1) + lhs(1,1)*rhs(1,1) + lhs(1,2)*rhs(2,1);
488 m(2,1) = lhs(2,0)*rhs(0,1) + lhs(2,1)*rhs(1,1) + lhs(2,2)*rhs(2,1);
490 m(0,2) = lhs(0,0)*rhs(0,2) + lhs(0,1)*rhs(1,2) + lhs(0,2)*rhs(2,2);
491 m(1,2) = lhs(1,0)*rhs(0,2) + lhs(1,1)*rhs(1,2) + lhs(1,2)*rhs(2,2);
492 m(2,2) = lhs(2,0)*rhs(0,2) + lhs(2,1)*rhs(1,2) + lhs(2,2)*rhs(2,2);
494 m(0,3) = lhs(0,0)*rhs(0,3) + lhs(0,1)*rhs(1,3) + lhs(0,2)*rhs(2,3) + lhs(0,3);
495 m(1,3) = lhs(1,0)*rhs(0,3) + lhs(1,1)*rhs(1,3) + lhs(1,2)*rhs(2,3) + lhs(1,3);
496 m(2,3) = lhs(2,0)*rhs(0,3) + lhs(2,1)*rhs(1,3) + lhs(2,2)*rhs(2,3) + lhs(2,3);
504 m(0,0) = lhs * rhs(0,0);
505 m(1,0) = lhs * rhs(1,0);
506 m(2,0) = lhs * rhs(2,0);
507 m(0,1) = lhs * rhs(0,1);
508 m(1,1) = lhs * rhs(1,1);
509 m(2,1) = lhs * rhs(2,1);
510 m(0,2) = lhs * rhs(0,2);
511 m(1,2) = lhs * rhs(1,2);
512 m(2,2) = lhs * rhs(2,2);
513 m(0,3) = lhs * rhs(0,3);
514 m(1,3) = lhs * rhs(1,3);
515 m(2,3) = lhs * rhs(2,3);
533 m(0,0) = lhs(0,0) + rhs(0,0);
534 m(1,0) = lhs(1,0) + rhs(1,0);
535 m(2,0) = lhs(2,0) + rhs(2,0);
536 m(0,1) = lhs(0,1) + rhs(0,1);
537 m(1,1) = lhs(1,1) + rhs(1,1);
538 m(2,1) = lhs(2,1) + rhs(2,1);
539 m(0,2) = lhs(0,2) + rhs(0,2);
540 m(1,2) = lhs(1,2) + rhs(1,2);
541 m(2,2) = lhs(2,2) + rhs(2,2);
542 m(0,3) = lhs(0,3) + rhs(0,3);
543 m(1,3) = lhs(1,3) + rhs(1,3);
544 m(2,3) = lhs(2,3) + rhs(2,3);
552 m(0,0) = lhs(0,0)*rhs(0,0) + lhs(0,1)*rhs(1,0) + lhs(0,2)*rhs(2,0) + lhs(0,3)*rhs(3,0);
553 m(1,0) = lhs(1,0)*rhs(0,0) + lhs(1,1)*rhs(1,0) + lhs(1,2)*rhs(2,0) + lhs(1,3)*rhs(3,0);
554 m(2,0) = lhs(2,0)*rhs(0,0) + lhs(2,1)*rhs(1,0) + lhs(2,2)*rhs(2,0) + lhs(2,3)*rhs(3,0);
555 m(3,0) = lhs(3,0)*rhs(0,0) + lhs(3,1)*rhs(1,0) + lhs(3,2)*rhs(2,0) + lhs(3,3)*rhs(3,0);
557 m(0,1) = lhs(0,0)*rhs(0,1) + lhs(0,1)*rhs(1,1) + lhs(0,2)*rhs(2,1) + lhs(0,3)*rhs(3,1);
558 m(1,1) = lhs(1,0)*rhs(0,1) + lhs(1,1)*rhs(1,1) + lhs(1,2)*rhs(2,1) + lhs(1,3)*rhs(3,1);
559 m(2,1) = lhs(2,0)*rhs(0,1) + lhs(2,1)*rhs(1,1) + lhs(2,2)*rhs(2,1) + lhs(2,3)*rhs(3,1);
560 m(3,1) = lhs(3,0)*rhs(0,1) + lhs(3,1)*rhs(1,1) + lhs(3,2)*rhs(2,1) + lhs(3,3)*rhs(3,1);
562 m(0,2) = lhs(0,0)*rhs(0,2) + lhs(0,1)*rhs(1,2) + lhs(0,2)*rhs(2,2) + lhs(0,3)*rhs(3,2);
563 m(1,2) = lhs(1,0)*rhs(0,2) + lhs(1,1)*rhs(1,2) + lhs(1,2)*rhs(2,2) + lhs(1,3)*rhs(3,2);
564 m(2,2) = lhs(2,0)*rhs(0,2) + lhs(2,1)*rhs(1,2) + lhs(2,2)*rhs(2,2) + lhs(2,3)*rhs(3,2);
565 m(3,2) = lhs(3,0)*rhs(0,2) + lhs(3,1)*rhs(1,2) + lhs(3,2)*rhs(2,2) + lhs(3,3)*rhs(3,2);
567 m(0,3) = lhs(0,0)*rhs(0,3) + lhs(0,1)*rhs(1,3) + lhs(0,2)*rhs(2,3) + lhs(0,3)*rhs(3,3);
568 m(1,3) = lhs(1,0)*rhs(0,3) + lhs(1,1)*rhs(1,3) + lhs(1,2)*rhs(2,3) + lhs(1,3)*rhs(3,3);
569 m(2,3) = lhs(2,0)*rhs(0,3) + lhs(2,1)*rhs(1,3) + lhs(2,2)*rhs(2,3) + lhs(2,3)*rhs(3,3);
570 m(3,3) = lhs(3,0)*rhs(0,3) + lhs(3,1)*rhs(1,3) + lhs(3,2)*rhs(2,3) + lhs(3,3)*rhs(3,3);
594 q.
w = lhs.
w*rhs.
w - lhs.
x*rhs.
x - lhs.
y*rhs.
y - lhs.
z*rhs.
z;
595 q.
x = lhs.
w*rhs.
x + lhs.
x*rhs.
w + lhs.
y*rhs.
z - lhs.
z*rhs.
y;
596 q.
y = lhs.
w*rhs.
y + lhs.
y*rhs.
w + lhs.
z*rhs.
x - lhs.
x*rhs.
z;
597 q.
z = lhs.
w*rhs.
z + lhs.
z*rhs.
w + lhs.
x*rhs.
y - lhs.
y*rhs.
x;
755 v.
x = lhs(0,0)*rhs.
x + lhs(0,1)*rhs.
y + lhs(0,2)*rhs.
z;
756 v.
y = lhs(1,0)*rhs.
x + lhs(1,1)*rhs.
y + lhs(1,2)*rhs.
z;
757 v.
z = lhs(2,0)*rhs.
x + lhs(2,1)*rhs.
y + lhs(2,2)*rhs.
z;
766 return rhs + lhs.
w * uv + uuv;
807 vtx.
nx = lhs(0,0)*rhs.
nx + lhs(0,1)*rhs.
ny + lhs(0,2)*rhs.
nz;
808 vtx.
ny = lhs(1,0)*rhs.
nx + lhs(1,1)*rhs.
ny + lhs(0,2)*rhs.
nz;
809 vtx.
nz = lhs(2,0)*rhs.
nx + lhs(2,1)*rhs.
ny + lhs(2,2)*rhs.
nz;
810 vtx.
x = lhs(0,0)*rhs.
x + lhs(0,1)*rhs.
y + lhs(0,2)*rhs.
z + lhs(0,3);
811 vtx.
y = lhs(1,0)*rhs.
x + lhs(1,1)*rhs.
y + lhs(1,2)*rhs.
z + lhs(1,3);
812 vtx.
z = lhs(2,0)*rhs.
x + lhs(2,1)*rhs.
y + lhs(2,2)*rhs.
z + lhs(2,3);
813 vtx.
u = rhs.
u; vtx.
v = rhs.
v;
StdMeshMatrix operator+(const StdMeshMatrix &lhs, const StdMeshMatrix &rhs)
StdMeshVector & operator-=(StdMeshVector &lhs, const StdMeshVector &rhs)
StdMeshMatrix & operator*=(StdMeshMatrix &lhs, const StdMeshMatrix &rhs)
StdMeshQuaternion & operator+=(StdMeshQuaternion &lhs, const StdMeshQuaternion &rhs)
StdMeshQuaternion operator-(const StdMeshQuaternion &rhs)
StdMeshMatrix operator*(const StdMeshMatrix &lhs, const StdMeshMatrix &rhs)
StdMeshVector operator/(const StdMeshVector &lhs, const StdMeshVector &rhs)
static StdMeshMatrix Identity()
static StdMeshMatrix Inverse(const StdMeshMatrix &mat)
static StdMeshMatrix Rotate(float angle, float rx, float ry, float rz)
static StdMeshMatrix LookAt(const StdMeshVector &eye, const StdMeshVector ¢er, const StdMeshVector &up)
static StdMeshMatrix Scale(float sx, float sy, float sz)
static StdMeshMatrix TransformInverse(const StdMeshTransformation &transform)
StdMeshTransformation Decompose() const
static StdMeshMatrix Translate(float dx, float dy, float dz)
static StdMeshMatrix Transform(const StdMeshTransformation &transform)
float Determinant() const
static StdMeshMatrix Zero()
static StdProjectionMatrix Scale(float sx, float sy, float sz)
static StdMeshMatrix Upper3x4(const StdProjectionMatrix &matrix)
static StdProjectionMatrix Rotate(float angle, float rx, float ry, float rz)
static StdProjectionMatrix Translate(float dx, float dy, float dz)
static StdProjectionMatrix Identity()
static StdProjectionMatrix Orthographic(float left, float right, float bottom, float top)
static StdMeshQuaternion Zero()
static StdMeshQuaternion Nlerp(const StdMeshQuaternion &lhs, const StdMeshQuaternion &rhs, float w)
static StdMeshQuaternion AngleAxis(float theta, const StdMeshVector &axis)
static StdMeshVector Zero()
static StdMeshVector UnitScale()
static StdMeshVector Translate(float dx, float dy, float dz)
static StdMeshVector Cross(const StdMeshVector &lhs, const StdMeshVector &rhs)