public static Mat3f operator +(Mat3f m1, Mat3f m2) { Mat3f res = new Mat3f(); res.data[0] = m1.data[0] + m2.data[0]; res.data[1] = m1.data[1] + m2.data[1]; res.data[2] = m1.data[2] + m2.data[2]; return(res); }
public Mat3f transpose() { Mat3f transpMat = new Mat3f(); transpMat.data[0][0] = data[0][0]; transpMat.data[0][1] = data[1][0]; transpMat.data[0][2] = data[2][0]; transpMat.data[1][0] = data[0][1]; transpMat.data[1][1] = data[1][1]; transpMat.data[1][2] = data[2][1]; transpMat.data[2][0] = data[0][2]; transpMat.data[2][1] = data[1][2]; transpMat.data[2][2] = data[2][2]; return(transpMat); }
public Mat3f inverse() { float Determinant = determinant(); Mat3f Inverse = new Mat3f(); Inverse.data[0][0] = +(data[1][1] * data[2][2] - data[2][1] * data[1][2]); Inverse.data[0][1] = -(data[1][0] * data[2][2] - data[2][0] * data[1][2]); Inverse.data[0][2] = +(data[1][0] * data[2][1] - data[2][0] * data[1][1]); Inverse.data[1][0] = -(data[0][1] * data[2][2] - data[2][1] * data[0][2]); Inverse.data[1][1] = +(data[0][0] * data[2][2] - data[2][0] * data[0][2]); Inverse.data[1][2] = -(data[0][0] * data[2][1] - data[2][0] * data[0][1]); Inverse.data[2][0] = +(data[0][1] * data[1][2] - data[1][1] * data[0][2]); Inverse.data[2][1] = -(data[0][0] * data[1][2] - data[1][0] * data[0][2]); Inverse.data[2][2] = +(data[0][0] * data[1][1] - data[1][0] * data[0][1]); Inverse *= 1.0f / Determinant; return(Inverse); }