Base(other)
{ }
-void Matrix::multiply(const Matrix &other)
+Matrix &Matrix::translate(const Vector3 &t)
{
- *this = *this*other;
+ return multiply(translation(t));
}
-void Matrix::translate(const Vector3 &t)
+Matrix &Matrix::rotate(const Angle &a, const Vector3 &x)
{
- multiply(translation(t));
+ return multiply(rotation(a, x));
}
-void Matrix::rotate(const Angle &a, const Vector3 &x)
+Matrix &Matrix::scale(const Vector3 &s)
{
- multiply(rotation(a, x));
-}
-
-void Matrix::scale(const Vector3 &s)
-{
- multiply(scaling(s));
-}
-
-Matrix Matrix::operator*(const Matrix &other) const
-{
- return static_cast<const Base &>(*this)*static_cast<const Base &>(other);
-}
-
-Matrix &Matrix::operator*=(const Matrix &other)
-{
- multiply(other);
- return *this;
-}
-
-Vector4 Matrix::operator*(const Vector4 &vec) const
-{
- return static_cast<const Base &>(*this)*LinAl::Vector<float, 4>(vec);
-}
-
-Vector3 Matrix::operator*(const Vector3 &vec) const
-{
- return Vector3((*this)*Vector4(vec, 1.0f));
+ return multiply(scaling(s));
}
float Matrix::operator[](unsigned i) const