Skip to content

Commit 6f65eb5

Browse files
committed
fix m3 inverse
1 parent 4d9bfcb commit 6f65eb5

File tree

1 file changed

+26
-31
lines changed

1 file changed

+26
-31
lines changed

webgl/resources/m3.js

+26-31
Original file line numberDiff line numberDiff line change
@@ -336,37 +336,32 @@
336336
function inverse(m, dst) {
337337
dst = dst || new MatType(9);
338338

339-
const m00 = m[0 * 4 + 0];
340-
const m01 = m[0 * 4 + 1];
341-
const m02 = m[0 * 4 + 2];
342-
const m10 = m[1 * 4 + 0];
343-
const m11 = m[1 * 4 + 1];
344-
const m12 = m[1 * 4 + 2];
345-
const m20 = m[2 * 4 + 0];
346-
const m21 = m[2 * 4 + 1];
347-
const m22 = m[2 * 4 + 2];
348-
349-
const m11_x_m22 = m11 * m22;
350-
const m21_x_m12 = m21 * m12;
351-
const m01_x_m22 = m01 * m22;
352-
const m21_x_m02 = m21 * m02;
353-
const m01_x_m12 = m01 * m12;
354-
const m11_x_m02 = m11 * m02;
355-
356-
const invDet = 1 / (
357-
m00 * (m11_x_m22 - m21_x_m12) -
358-
m10 * (m01_x_m22 - m21_x_m02) +
359-
m20 * (m01_x_m12 - m11_x_m02));
360-
361-
dst[ 0] = +(m11_x_m22 - m21_x_m12) * invDet;
362-
dst[ 1] = -(m10 * m22 - m20 * m12) * invDet;
363-
dst[ 2] = +(m10 * m21 - m20 * m11) * invDet;
364-
dst[ 3] = -(m01_x_m22 - m21_x_m02) * invDet;
365-
dst[ 4] = +(m00 * m22 - m20 * m02) * invDet;
366-
dst[ 5] = -(m00 * m21 - m20 * m01) * invDet;
367-
dst[ 6] = +(m01_x_m12 - m11_x_m02) * invDet;
368-
dst[ 7] = -(m00 * m12 - m10 * m02) * invDet;
369-
dst[ 8] = +(m00 * m11 - m10 * m01) * invDet;
339+
const m00 = m[0 * 3 + 0];
340+
const m01 = m[0 * 3 + 1];
341+
const m02 = m[0 * 3 + 2];
342+
const m10 = m[1 * 3 + 0];
343+
const m11 = m[1 * 3 + 1];
344+
const m12 = m[1 * 3 + 2];
345+
const m20 = m[2 * 3 + 0];
346+
const m21 = m[2 * 3 + 1];
347+
const m22 = m[2 * 3 + 2];
348+
349+
const b01 = m22 * m11 - m12 * m21;
350+
const b11 = -m22 * m10 + m12 * m20;
351+
const b21 = m21 * m10 - m11 * m20;
352+
353+
const invDet = m00 * b01 + m01 * b11 + m02 * b21;
354+
const det = 1.0 / invDet;
355+
356+
dst[0] = b01 * det;
357+
dst[1] = (-m22 * m01 + m02 * m21) * det;
358+
dst[2] = ( m12 * m01 - m02 * m11) * det;
359+
dst[3] = b11 * det;
360+
dst[4] = ( m22 * m00 - m02 * m20) * det;
361+
dst[5] = (-m12 * m00 + m02 * m10) * det;
362+
dst[6] = b21 * det;
363+
dst[7] = (-m21 * m00 + m01 * m20) * det;
364+
dst[8] = ( m11 * m00 - m01 * m10) * det;
370365

371366
return dst;
372367
}

0 commit comments

Comments
 (0)