Matrix3 operator*(const Matrix3& a, const Matrix3& b) { return Matrix3( Dot(a.GetRow1(), b.GetCol1()), Dot(a.GetRow1(), b.GetCol2()), Dot(a.GetRow1(), b.GetCol3()), Dot(a.GetRow2(), b.GetCol1()), Dot(a.GetRow2(), b.GetCol2()), Dot(a.GetRow2(), b.GetCol3()), Dot(a.GetRow3(), b.GetCol1()), Dot(a.GetRow3(), b.GetCol2()), Dot(a.GetRow3(), b.GetCol3()) ); }
Vector3 operator*(const Matrix3& a, const Vector3& v) { return Vector3(Dot(a.GetRow1(), v), Dot(a.GetRow2(), v), Dot(a.GetRow3(), v)); }