19 const double a00 = a[0];
20 const double a01 = a[1];
21 const double a02 = a[2];
22 const double a10 = a[3];
23 const double a11 = a[4];
24 const double a12 = a[5];
25 const double a20 = a[6];
26 const double a21 = a[7];
27 const double a22 = a[8];
29 const double M00 = a11 * a22 - a12 * a21;
30 const double M01 = a02 * a21 - a01 * a22;
31 const double M02 = a01 * a12 - a02 * a11;
32 const double M10 = a12 * a20 - a10 * a22;
33 const double M11 = a00 * a22 - a02 * a20;
34 const double M12 = a02 * a10 - a00 * a12;
35 const double M20 = a10 * a21 - a11 * a20;
36 const double M21 = a01 * a20 - a00 * a21;
37 const double M22 = a00 * a11 - a01 * a10;
39 const double idet = 1.0 / (a00 * M00 + a01 * M10 + a02 * M20);
54mat3_mul(
double *ret,
const double *a,
const double *b)
56 ret[0] = a[0] * b[0] + a[1] * b[3] + a[2] * b[6];
57 ret[1] = a[0] * b[1] + a[1] * b[4] + a[2] * b[7];
58 ret[2] = a[0] * b[2] + a[1] * b[5] + a[2] * b[8];
59 ret[3] = a[3] * b[0] + a[4] * b[3] + a[5] * b[6];
60 ret[4] = a[3] * b[1] + a[4] * b[4] + a[5] * b[7];
61 ret[5] = a[3] * b[2] + a[4] * b[5] + a[5] * b[8];
62 ret[6] = a[6] * b[0] + a[7] * b[3] + a[8] * b[6];
63 ret[7] = a[6] * b[1] + a[7] * b[4] + a[8] * b[7];
64 ret[8] = a[6] * b[2] + a[7] * b[5] + a[8] * b[8];
69mat3vec3_mul(
double *ret,
const double *m,
const double *v)
71 ret[0] = m[0] * v[0] + m[1] * v[1] + m[2] * v[2];
72 ret[1] = m[3] * v[0] + m[4] * v[1] + m[5] * v[2];
73 ret[2] = m[6] * v[0] + m[7] * v[1] + m[8] * v[2];