]> git.tdb.fi Git - libs/gl.git/commitdiff
Move some common matrix operations to the header so they can be inlined
authorMikko Rasa <tdb@tdb.fi>
Fri, 4 Dec 2015 12:07:29 +0000 (14:07 +0200)
committerMikko Rasa <tdb@tdb.fi>
Fri, 4 Dec 2015 12:13:32 +0000 (14:13 +0200)
source/matrix.cpp
source/matrix.h

index ddc0cdf58c8ac64c72e1d830e6226f0edc2dcfa7..a4c36a022a9ecb338406a496760f12c1d0655540 100644 (file)
@@ -22,12 +22,6 @@ Matrix::Matrix(const LinAl::Matrix<float, 4, 4> &other):
        Base(other)
 { }
 
-Matrix &Matrix::multiply(const Matrix &other)
-{
-       *this = *this*other;
-       return *this;
-}
-
 Matrix &Matrix::translate(const Vector3 &t)
 {
        return multiply(translation(t));
@@ -43,26 +37,6 @@ Matrix &Matrix::scale(const Vector3 &s)
        return 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)
-{
-       return multiply(other);
-}
-
-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 ((*this)*compose(vec, 1.0f)).slice<3>(0);
-}
-
 float Matrix::operator[](unsigned i) const
 {
        if(i>=16)
index 95932bc65b104e3f10839703ad6a20e446be47c9..2e1096f5f4586d7f6c05ea0620f59a5425b4b450 100644 (file)
@@ -23,7 +23,7 @@ public:
 
        const float *data() const { return &Base::operator()(0, 0); }
 
-       Matrix &multiply(const Matrix &);
+       Matrix &multiply(const Matrix &m) { return operator*=(m); }
        Matrix &translate(float x, float y, float z) { return translate(Vector3(x, y, z)); }
        Matrix &translate(const Vector3 &);
        Matrix &rotate(const Angle &a, float x, float y, float z) { return rotate(a, Vector3(x, y, z)); }
@@ -36,10 +36,10 @@ public:
        Matrix &scale(float x, float y, float z) { return scale(Vector3(x, y, z)); }
        Matrix &scale(const Vector3 &);
 
-       Matrix operator*(const Matrix &) const;
-       Matrix &operator*=(const Matrix &);
-       Vector4 operator*(const Vector4 &) const;
-       Vector3 operator*(const Vector3 &) const;
+       Matrix operator*(const Matrix &m) const { return static_cast<const Base &>(*this)*static_cast<const Base &>(m); }
+       Matrix &operator*=(const Matrix &m) { Base::operator*=(m); return *this; }
+       Vector4 operator*(const Vector4 &v) const { return static_cast<const Base &>(*this)*v; }
+       Vector3 operator*(const Vector3 &v) const { return ((*this)*compose(v, 1.0f)).slice<3>(0); }
        float operator[](unsigned) const;
 
        static Matrix translation(float x, float y, float z) { return translation(Vector3(x, y, z)); }