solve3 static method
Solve A * x = b.
Implementation
static void solve3(Matrix4 A, Vector3 x, Vector3 b) {
final double a0x = A.entry(0, 0);
final double a0y = A.entry(1, 0);
final double a0z = A.entry(2, 0);
final double a1x = A.entry(0, 1);
final double a1y = A.entry(1, 1);
final double a1z = A.entry(2, 1);
final double a2x = A.entry(0, 2);
final double a2y = A.entry(1, 2);
final double a2z = A.entry(2, 2);
final double bx = b.x - A._m4storage[12];
final double by = b.y - A._m4storage[13];
final double bz = b.z - A._m4storage[14];
double rx, ry, rz;
double det;
// Column1 cross Column 2
rx = a1y * a2z - a1z * a2y;
ry = a1z * a2x - a1x * a2z;
rz = a1x * a2y - a1y * a2x;
// A.getColumn(0).dot(x)
det = a0x * rx + a0y * ry + a0z * rz;
if (det != 0.0) {
det = 1.0 / det;
}
// b dot [Column1 cross Column 2]
final double x_ = det * (bx * rx + by * ry + bz * rz);
// Column2 cross b
rx = -(a2y * bz - a2z * by);
ry = -(a2z * bx - a2x * bz);
rz = -(a2x * by - a2y * bx);
// Column0 dot -[Column2 cross b (Column3)]
final double y_ = det * (a0x * rx + a0y * ry + a0z * rz);
// b cross Column 1
rx = -(by * a1z - bz * a1y);
ry = -(bz * a1x - bx * a1z);
rz = -(bx * a1y - by * a1x);
// Column0 dot -[b cross Column 1]
final double z_ = det * (a0x * rx + a0y * ry + a0z * rz);
x
..x = x_
..y = y_
..z = z_;
}