invert3x3 function
Inverts a 3x3 matrix.
Implementation
List<List<double>> invert3x3(List<List<double>> m) {
final a = m[0][0], b = m[0][1], c = m[0][2];
final d = m[1][0], e = m[1][1], f = m[1][2];
final g = m[2][0], h = m[2][1], i = m[2][2];
final det = a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g);
if (det.abs() < 1e-20) {
throw ArgumentError('Matrix is singular, cannot invert');
}
final invDet = 1.0 / det;
return [
[
(e * i - f * h) * invDet,
(c * h - b * i) * invDet,
(b * f - c * e) * invDet,
],
[
(f * g - d * i) * invDet,
(a * i - c * g) * invDet,
(c * d - a * f) * invDet,
],
[
(d * h - e * g) * invDet,
(b * g - a * h) * invDet,
(a * e - b * d) * invDet,
],
];
}