232 this->data[0][0] = _axis.
X()*_axis.
X()*C + c;
233 this->data[0][1] = _axis.
X()*_axis.
Y()*C - _axis.
Z()*s;
234 this->data[0][2] = _axis.
X()*_axis.
Z()*C + _axis.
Y()*s;
236 this->data[1][0] = _axis.
Y()*_axis.
X()*C + _axis.
Z()*s;
237 this->data[1][1] = _axis.
Y()*_axis.
Y()*C + c;
238 this->data[1][2] = _axis.
Y()*_axis.
Z()*C - _axis.
X()*s;
240 this->data[2][0] = _axis.
Z()*_axis.
X()*C - _axis.
Y()*s;
241 this->data[2][1] = _axis.
Z()*_axis.
Y()*C + _axis.
X()*s;
242 this->data[2][2] = _axis.
Z()*_axis.
Z()*C + c;
267 if (_v1LengthSquared <= 0.0)
270 this->Set(1, 0, 0, 0, 1, 0, 0, 0, 1);
275 if (_v2LengthSquared <= 0.0)
278 this->Set(1, 0, 0, 0, 1, 0, 0, 0, 1);
282 const T dot = _v1.
Dot(_v2) / sqrt(_v1LengthSquared * _v2LengthSquared);
283 if (fabs(dot - 1.0) <= 1e-6)
286 this->Set(1, 0, 0, 0, 1, 0, 0, 0, 1);
289 else if (fabs(dot + 1.0) <= 1e-6)
292 this->Set(-1, 0, 0, 0, -1, 0, 0, 0, -1);
298 this->SetFromAxisAngle(cross, acos(dot));
335 this->data[0][0] - _m(0, 0),
336 this->data[0][1] - _m(0, 1),
337 this->data[0][2] - _m(0, 2),
338 this->data[1][0] - _m(1, 0),
339 this->data[1][1] - _m(1, 1),
340 this->data[1][2] - _m(1, 2),
341 this->data[2][0] - _m(2, 0),
342 this->data[2][1] - _m(2, 1),
343 this->data[2][2] - _m(2, 2));
352 this->data[0][0]+_m(0, 0),
353 this->data[0][1]+_m(0, 1),
354 this->data[0][2]+_m(0, 2),
355 this->data[1][0]+_m(1, 0),
356 this->data[1][1]+_m(1, 1),
357 this->data[1][2]+_m(1, 2),
358 this->data[2][0]+_m(2, 0),
359 this->data[2][1]+_m(2, 1),
360 this->data[2][2]+_m(2, 2));
369 _s * this->data[0][0], _s * this->data[0][1], _s * this->data[0][2],
370 _s * this->data[1][0], _s * this->data[1][1], _s * this->data[1][2],
371 _s * this->data[2][0], _s * this->data[2][1], _s * this->data[2][2]);
381 this->data[0][0]*_m(0, 0)+
382 this->data[0][1]*_m(1, 0)+
383 this->data[0][2]*_m(2, 0),
385 this->data[0][0]*_m(0, 1)+
386 this->data[0][1]*_m(1, 1)+
387 this->data[0][2]*_m(2, 1),
389 this->data[0][0]*_m(0, 2)+
390 this->data[0][1]*_m(1, 2)+
391 this->data[0][2]*_m(2, 2),
394 this->data[1][0]*_m(0, 0)+
395 this->data[1][1]*_m(1, 0)+
396 this->data[1][2]*_m(2, 0),
398 this->data[1][0]*_m(0, 1)+
399 this->data[1][1]*_m(1, 1)+
400 this->data[1][2]*_m(2, 1),
402 this->data[1][0]*_m(0, 2)+
403 this->data[1][1]*_m(1, 2)+
404 this->data[1][2]*_m(2, 2),
407 this->data[2][0]*_m(0, 0)+
408 this->data[2][1]*_m(1, 0)+
409 this->data[2][2]*_m(2, 0),
411 this->data[2][0]*_m(0, 1)+
412 this->data[2][1]*_m(1, 1)+
413 this->data[2][2]*_m(2, 1),
415 this->data[2][0]*_m(0, 2)+
416 this->data[2][1]*_m(1, 2)+
417 this->data[2][2]*_m(2, 2));
466 return equal<T>(this->data[0][0], _m(0, 0), _tol)
467 && equal<T>(this->data[0][1], _m(0, 1), _tol)
468 && equal<T>(this->data[0][2], _m(0, 2), _tol)
469 && equal<T>(this->data[1][0], _m(1, 0), _tol)
470 && equal<T>(this->data[1][1], _m(1, 1), _tol)
471 && equal<T>(this->data[1][2], _m(1, 2), _tol)
472 && equal<T>(this->data[2][0], _m(2, 0), _tol)
473 && equal<T>(this->data[2][1], _m(2, 1), _tol)
474 && equal<T>(this->data[2][2], _m(2, 2), _tol);
525 T t0 = this->data[2][2]*this->data[1][1]
526 - this->data[2][1]*this->data[1][2];
528 T t1 = -(this->data[2][2]*this->data[1][0]
529 -this->data[2][0]*this->data[1][2]);
531 T t2 = this->data[2][1]*this->data[1][0]
532 - this->data[2][0]*this->data[1][1];
534 return t0 * this->data[0][0]
535 + t1 * this->data[0][1]
536 + t2 * this->data[0][2];
543 T t0 = this->data[2][2]*this->data[1][1] -
544 this->data[2][1]*this->data[1][2];
546 T t1 = -(this->data[2][2]*this->data[1][0] -
547 this->data[2][0]*this->data[1][2]);
549 T t2 = this->data[2][1]*this->data[1][0] -
550 this->data[2][0]*this->data[1][1];
552 T invDet = 1.0 / (t0 * this->data[0][0] +
553 t1 * this->data[0][1] +
554 t2 * this->data[0][2]);
558 - (this->data[2][2] * this->data[0][1] -
559 this->data[2][1] * this->data[0][2]),
560 + (this->data[1][2] * this->data[0][1] -
561 this->data[1][1] * this->data[0][2]),
563 + (this->data[2][2] * this->data[0][0] -
564 this->data[2][0] * this->data[0][2]),
565 - (this->data[1][2] * this->data[0][0] -
566 this->data[1][0] * this->data[0][2]),
568 - (this->data[2][1] * this->data[0][0] -
569 this->data[2][0] * this->data[0][1]),
570 + (this->data[1][1] * this->data[0][0] -
571 this->data[1][0] * this->data[0][1]));
587 this->data[0][0], this->data[1][0], this->data[2][0],
588 this->data[0][1], this->data[1][1], this->data[2][1],
589 this->data[0][2], this->data[1][2], this->data[2][2]);