feat(matrix3): add inv function.

This commit is contained in:
2025-03-31 15:18:41 +02:00
parent 89c619f83e
commit 28eb4cbfc3
2 changed files with 22 additions and 1 deletions

View File

@@ -15,5 +15,6 @@ Mat3 mat3Scl(Mat3 m, float scalar);
Mat3 mat3Mul(Mat3 m1, Mat3 m2);
Mat3 mat3Tpo(Mat3 m);
float mat3Det(Mat3 m);
Mat3 mat3Inv(Mat3 m);
#endif // MATRIX_H

View File

@@ -1,6 +1,5 @@
#include "math/matrix3.h"
#include <string.h>
#include <math.h>
Mat3 mat3(float arr[9]) {
Mat3 mat;
@@ -88,3 +87,24 @@ float mat3Det(Mat3 m) {
m.m[1] * (m.m[3] * m.m[8] - m.m[5] * m.m[6]) +
m.m[2] * (m.m[3] * m.m[7] - m.m[4] * m.m[6]);
}
Mat3 mat3Inv(Mat3 m) {
Mat3 inv;
float det = mat3Det(m);
if (det == 0) return mat3Ity();
float invDet = 1.0f / det;
// ???
inv.m[0] = (m.m[4] * m.m[8] - m.m[5] * m.m[7]) * invDet;
inv.m[1] = -(m.m[1] * m.m[8] - m.m[2] * m.m[7]) * invDet;
inv.m[2] = (m.m[1] * m.m[5] - m.m[2] * m.m[4]) * invDet;
inv.m[3] = -(m.m[3] * m.m[8] - m.m[5] * m.m[6]) * invDet;
inv.m[4] = (m.m[0] * m.m[8] - m.m[2] * m.m[6]) * invDet;
inv.m[5] = -(m.m[0] * m.m[5] - m.m[2] * m.m[3]) * invDet;
inv.m[6] = (m.m[3] * m.m[7] - m.m[4] * m.m[6]) * invDet;
inv.m[7] = -(m.m[0] * m.m[7] - m.m[1] * m.m[6]) * invDet;
inv.m[8] = (m.m[0] * m.m[4] - m.m[1] * m.m[3]) * invDet;
return inv;
}