public void OrthoNormalize() { var vX = new Vertex3D(Matrix[0][0], Matrix[1][0], Matrix[2][0]); var vY = new Vertex3D(Matrix[0][1], Matrix[1][1], Matrix[2][1]); var vZ = Vertex3D.CrossProduct(vX, vY); vX.Normalize(); vZ.Normalize(); var vYY = Vertex3D.CrossProduct(vZ, vX); Matrix[0][0] = vX.X; Matrix[0][1] = vYY.X; Matrix[0][2] = vZ.X; Matrix[1][0] = vX.Y; Matrix[1][1] = vYY.Y; Matrix[1][2] = vZ.Y; Matrix[2][0] = vX.Z; Matrix[2][1] = vYY.Z; Matrix[2][2] = vZ.Z; }