invert2 method
Matrix3
invert2(
- Matrix3 m
Invert matrix m
Implementation
Matrix3 invert2(Matrix3 m ) {
Float32List te = storage, tm = m.storage;
double a00 = tm[0], a10 = tm[3], a20 = tm[6],
a01 = tm[1], a11 = tm[4], a21 = tm[7],
a02 = tm[2], a12 = tm[5], a22 = tm[8],
b01 = a22 * a11 - a12 * a21,
b11 = -a22 * a10 + a12 * a20,
b21 = a21 * a10 - a11 * a20,
det = a00 * b01 + a01 * b11 + a02 * b21;
if ( det == 0 ) {
//print( "can't invert matrix, determinant is 0");
setIdentity();
return this;
}
det = 1.0 / det;
te[0] = b01 * det;
te[1] = (-a22 * a01 + a02 * a21) * det;
te[2] = (a12 * a01 - a02 * a11) * det;
te[3] = b11 * det;
te[4] = (a22 * a00 - a02 * a20) * det;
te[5] = (-a12 * a00 + a02 * a10) * det;
te[6] = b21 * det;
te[7] = (-a21 * a00 + a01 * a20) * det;
te[8] = (a11 * a00 - a01 * a10) * det;
return this;
}