public static Matrix3x3 operator *(Matrix3x3 S1, Matrix3x3 S2)
    {
        Vector3 _r1 = new Vector3(Vector3.Dot(S1.GetRow(0), S2.GetColumn(0)), Vector3.Dot(S1.GetRow(0), S2.GetColumn(1)), Vector3.Dot(S1.GetRow(0), S2.GetColumn(2)));
        Vector3 _r2 = new Vector3(Vector3.Dot(S1.GetRow(1), S2.GetColumn(0)), Vector3.Dot(S1.GetRow(1), S2.GetColumn(1)), Vector3.Dot(S1.GetRow(1), S2.GetColumn(2)));
        Vector3 _r3 = new Vector3(Vector3.Dot(S1.GetRow(2), S2.GetColumn(0)), Vector3.Dot(S1.GetRow(2), S2.GetColumn(1)), Vector3.Dot(S1.GetRow(2), S2.GetColumn(2)));

        return(new Matrix3x3(_r1, _r2, _r3));
    }
 public static Vector3 operator *(Matrix3x3 S1, Vector3 S2)
 {
     return(new Vector3(Vector3.Dot(S1.GetRow(0), S2), Vector3.Dot(S1.GetRow(1), S2), Vector3.Dot(S1.GetRow(2), S2)));
 }