diff options
Diffstat (limited to 'source/core/StarMatrix3.hpp')
-rw-r--r-- | source/core/StarMatrix3.hpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/source/core/StarMatrix3.hpp b/source/core/StarMatrix3.hpp index 04d8005..8cdd2d5 100644 --- a/source/core/StarMatrix3.hpp +++ b/source/core/StarMatrix3.hpp @@ -110,6 +110,8 @@ public: template <typename T2> Vec3 operator*(Vector<T2, 3> const& v) const; + template <typename T2> + Vec2 operator*(Vector<T2, 2> const& v) const; private: Rows m_rows; }; @@ -304,8 +306,7 @@ void Matrix3<T>::scale(T scale, Vec2 const& point) { template <typename T> template <typename T2> Vector<T2, 2> Matrix3<T>::transformVec2(Vector<T2, 2> const& point) const { - Vector<T2, 3> res = (*this) * Vector<T2, 3>(point, 1); - return res.vec2(); + return (*this) * point; } template <typename T> @@ -413,6 +414,13 @@ auto Matrix3<T>::operator*(const Vector<T2, 3>& u) const -> Vec3 { } template <typename T> +template <typename T2> +auto Matrix3<T>::operator*(const Vector<T2, 2>& u) const -> Vec2 { + return Vec2(m_rows[0][0] * u[0] + m_rows[0][1] * u[1] + m_rows[0][2], + m_rows[1][0] * u[0] + m_rows[1][1] * u[1] + m_rows[1][2]); +} + +template <typename T> Matrix3<T> Matrix3<T>::operator/(const T& s) const { return Matrix3<T>(m_rows[0] / s, m_rows[1] / s, m_rows[2] / s); } |