public RotMatrix(RotMatrix m) { _values[0, 0] = m._values[0, 0]; _values[0, 1] = m._values[0, 1]; _values[0, 2] = m._values[0, 2]; _values[1, 0] = m._values[1, 0]; _values[1, 1] = m._values[1, 1]; _values[1, 2] = m._values[1, 2]; _values[2, 0] = m._values[2, 0]; _values[2, 1] = m._values[2, 1]; _values[2, 2] = m._values[2, 2]; }
public RotMatrix Invert() { var m = new RotMatrix(this); _values[0, 0] = m._values[0, 0]; _values[0, 1] = m._values[1, 0]; _values[0, 2] = m._values[2, 0]; _values[1, 0] = m._values[0, 1]; _values[1, 1] = m._values[1, 1]; _values[1, 2] = m._values[2, 1]; _values[2, 0] = m._values[0, 2]; _values[2, 1] = m._values[1, 2]; _values[2, 2] = m._values[2, 2]; return(this); }
public static RotMatrix operator *(RotMatrix m1, RotMatrix m2) { var m = new RotMatrix(); m.Values[0, 0] = m1.Values[0, 0] * m2.Values[0, 0] + m1.Values[0, 1] * m2.Values[1, 0] + m1.Values[0, 2] * m2.Values[2, 0]; m.Values[0, 1] = m1.Values[0, 0] * m2.Values[0, 1] + m1.Values[0, 1] * m2.Values[1, 1] + m1.Values[0, 2] * m2.Values[2, 1]; m.Values[0, 2] = m1.Values[0, 0] * m2.Values[0, 2] + m1.Values[0, 1] * m2.Values[1, 2] + m1.Values[0, 2] * m2.Values[2, 2]; m.Values[1, 0] = m1.Values[1, 0] * m2.Values[0, 0] + m1.Values[1, 1] * m2.Values[1, 0] + m1.Values[1, 2] * m2.Values[2, 0]; m.Values[1, 1] = m1.Values[1, 0] * m2.Values[0, 1] + m1.Values[1, 1] * m2.Values[1, 1] + m1.Values[1, 2] * m2.Values[2, 1]; m.Values[1, 2] = m1.Values[1, 0] * m2.Values[0, 2] + m1.Values[1, 1] * m2.Values[1, 2] + m1.Values[1, 2] * m2.Values[2, 2]; m.Values[2, 0] = m1.Values[2, 0] * m2.Values[0, 0] + m1.Values[2, 1] * m2.Values[1, 0] + m1.Values[2, 2] * m2.Values[2, 0]; m.Values[2, 1] = m1.Values[2, 0] * m2.Values[0, 1] + m1.Values[2, 1] * m2.Values[1, 1] + m1.Values[2, 2] * m2.Values[2, 1]; m.Values[2, 2] = m1.Values[2, 0] * m2.Values[0, 2] + m1.Values[2, 1] * m2.Values[1, 2] + m1.Values[2, 2] * m2.Values[2, 2]; return(m); }