Function inverse
Compute the inverse of a matrix
M inverse(M)
(
in M m
)
if (isMat2!M);
M inverse(M)
(
in M m
)
if (isMat3!M);
M inverse(M)
(
in M m
)
if (isMat4!M);
Example
/// Example from https://en.wikipedia.org/wiki/Gaussian_elimination
const m = FMat3(
2, -1, 0,
-1, 2, -1,
0, -1, 2
);
const invM = inverse(m);
import gfx .math .approx : approxUlp;
assert(approxUlp(invM, FMat3(
0.75f, 0.5f, 0.25f,
0.5f, 1f, 0.5f,
0.25f, 0.5f, 0.75f
)));
assert(approxUlp(inverse(invM), m));
Example
import gfx .math .transform : translation;
import gfx .math .approx : approxUlpAndAbs;
const trM = translation!float(3, 4, 5);
const expected = translation!float(-3, -4, -5);
const inv = inverse(trM);
assert(approxUlpAndAbs( inv, expected ));
assert(approxUlpAndAbs( inverse(inv), trM ));
assert(approxUlpAndAbs( inv * trM, FMat4 .identity ));