global proc float[] invertMat(float $m[]) { float $outMatrix[16]; $outMatrix[0] = $m[6]*$m[11]*$m[13] - $m[7]*$m[10]*$m[13] + $m[7]*$m[9]*$m[14] - $m[5]*$m[11]*$m[14] - $m[6]*$m[9]*$m[15] + $m[5]*$m[10]*$m[15]; $outMatrix[1] = $m[3]*$m[10]*$m[13] - $m[2]*$m[11]*$m[13] - $m[3]*$m[9]*$m[14] + $m[1]*$m[11]*$m[14] + $m[2]*$m[9]*$m[15] - $m[1]*$m[10]*$m[15]; $outMatrix[2] = $m[2]*$m[7]*$m[13] - $m[3]*$m[6]*$m[13] + $m[3]*$m[5]*$m[14] - $m[1]*$m[7]*$m[14] - $m[2]*$m[5]*$m[15] + $m[1]*$m[6]*$m[15]; $outMatrix[3] = $m[3]*$m[6]*$m[9] - $m[2]*$m[7]*$m[9] - $m[3]*$m[5]*$m[10] + $m[1]*$m[7]*$m[10] + $m[2]*$m[5]*$m[11] - $m[1]*$m[6]*$m[11]; $outMatrix[4] = $m[7]*$m[10]*$m[12] - $m[6]*$m[11]*$m[12] - $m[7]*$m[8]*$m[14] + $m[4]*$m[11]*$m[14] + $m[6]*$m[8]*$m[15] - $m[4]*$m[10]*$m[15]; $outMatrix[5] = $m[2]*$m[11]*$m[12] - $m[3]*$m[10]*$m[12] + $m[3]*$m[8]*$m[14] - $m[0]*$m[11]*$m[14] - $m[2]*$m[8]*$m[15] + $m[0]*$m[10]*$m[15]; $outMatrix[6] = $m[3]*$m[6]*$m[12] - $m[2]*$m[7]*$m[12] - $m[3]*$m[4]*$m[14] + $m[0]*$m[7]*$m[14] + $m[2]*$m[4]*$m[15] - $m[0]*$m[6]*$m[15]; $outMatrix[7] = $m[2]*$m[7]*$m[8] - $m[3]*$m[6]*$m[8] + $m[3]*$m[4]*$m[10] - $m[0]*$m[7]*$m[10] - $m[2]*$m[4]*$m[11] + $m[0]*$m[6]*$m[11]; $outMatrix[8] = $m[5]*$m[11]*$m[12] - $m[7]*$m[9]*$m[12] + $m[7]*$m[8]*$m[13] - $m[4]*$m[11]*$m[13] - $m[5]*$m[8]*$m[15] + $m[4]*$m[9]*$m[15]; $outMatrix[9] = $m[3]*$m[9]*$m[12] - $m[1]*$m[11]*$m[12] - $m[3]*$m[8]*$m[13] + $m[0]*$m[11]*$m[13] + $m[1]*$m[8]*$m[15] - $m[0]*$m[9]*$m[15]; $outMatrix[10] = $m[1]*$m[7]*$m[12] - $m[3]*$m[5]*$m[12] + $m[3]*$m[4]*$m[13] - $m[0]*$m[7]*$m[13] - $m[1]*$m[4]*$m[15] + $m[0]*$m[5]*$m[15]; $outMatrix[11] = $m[3]*$m[5]*$m[8] - $m[1]*$m[7]*$m[8] - $m[3]*$m[4]*$m[9] + $m[0]*$m[7]*$m[9] + $m[1]*$m[4]*$m[11] - $m[0]*$m[5]*$m[11]; $outMatrix[12] = $m[6]*$m[9]*$m[12] - $m[5]*$m[10]*$m[12] - $m[6]*$m[8]*$m[13] + $m[4]*$m[10]*$m[13] + $m[5]*$m[8]*$m[14] - $m[4]*$m[9]*$m[14]; $outMatrix[13] = $m[1]*$m[10]*$m[12] - $m[2]*$m[9]*$m[12] + $m[2]*$m[8]*$m[13] - $m[0]*$m[10]*$m[13] - $m[1]*$m[8]*$m[14] + $m[0]*$m[9]*$m[14]; $outMatrix[14] = $m[2]*$m[5]*$m[12] - $m[1]*$m[6]*$m[12] - $m[2]*$m[4]*$m[13] + $m[0]*$m[6]*$m[13] + $m[1]*$m[4]*$m[14] - $m[0]*$m[5]*$m[14]; $outMatrix[15] = $m[1]*$m[6]*$m[8] - $m[2]*$m[5]*$m[8] + $m[2]*$m[4]*$m[9] - $m[0]*$m[6]*$m[9] - $m[1]*$m[4]*$m[10] + $m[0]*$m[5]*$m[10]; return $outMatrix; }