| 286 | } |
| 287 | |
| 288 | Matrix3D Terathon::Inverse(const Matrix3D& m) |
| 289 | { |
| 290 | const Vector3D& a = m[0]; |
| 291 | const Vector3D& b = m[1]; |
| 292 | const Vector3D& c = m[2]; |
| 293 | |
| 294 | Bivector3D g0 = b ^ c; |
| 295 | Bivector3D g1 = c ^ a; |
| 296 | Bivector3D g2 = a ^ b; |
| 297 | |
| 298 | float invDet = 1.0F / (g2 ^ c); |
| 299 | |
| 300 | return (Matrix3D(g0.x * invDet, g0.y * invDet, g0.z * invDet, |
| 301 | g1.x * invDet, g1.y * invDet, g1.z * invDet, |
| 302 | g2.x * invDet, g2.y * invDet, g2.z * invDet)); |
| 303 | } |
| 304 | |
| 305 | Matrix3D Terathon::Adjugate(const Matrix3D& m) |
| 306 | { |
nothing calls this directly
no test coverage detected