From 54d55aeaf61869f2bcb8af79869bf3eb0274eed4 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Wed, 4 Jul 2012 18:25:07 +0200 Subject: [PATCH] fix bug #487: isometry * scaling was not compiling --- Eigen/src/Geometry/Scaling.h | 17 ++++++----------- Eigen/src/Geometry/Transform.h | 15 ++++++--------- test/geo_transformations.cpp | 3 +++ 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/Eigen/src/Geometry/Scaling.h b/Eigen/src/Geometry/Scaling.h index 3d4b254ca..65364f07f 100644 --- a/Eigen/src/Geometry/Scaling.h +++ b/Eigen/src/Geometry/Scaling.h @@ -75,7 +75,12 @@ public: /** Concatenates a uniform scaling and an affine transformation */ template - inline Transform operator* (const Transform& t) const; + inline Transform operator* (const Transform& t) const + { + Transform res = t; + res.prescale(factor()); + return res; +} /** Concatenates a uniform scaling and a linear transformation matrix */ // TODO returns an expression @@ -171,16 +176,6 @@ UniformScaling::operator* (const Translation& t) const return res; } -template -template -inline Transform -UniformScaling::operator* (const Transform& t) const -{ - Transform res = t; - res.prescale(factor()); - return res; -} - } // end namespace Eigen #endif // EIGEN_SCALING_H diff --git a/Eigen/src/Geometry/Transform.h b/Eigen/src/Geometry/Transform.h index cd8d74bae..b2a503ad2 100644 --- a/Eigen/src/Geometry/Transform.h +++ b/Eigen/src/Geometry/Transform.h @@ -545,7 +545,12 @@ public: inline Transform& operator=(const UniformScaling& t); inline Transform& operator*=(const UniformScaling& s) { return scale(s.factor()); } - inline Transform operator*(const UniformScaling& s) const; + inline Transform operator*(const UniformScaling& s) const + { + Transform res = *this; + res.scale(s.factor()); + return res; + } inline Transform& operator*=(const DiagonalMatrix& s) { linear() *= s; return *this; } @@ -973,14 +978,6 @@ inline Transform& Transform::o return *this; } -template -inline Transform Transform::operator*(const UniformScaling& s) const -{ - Transform res = *this; - res.scale(s.factor()); - return res; -} - template template inline Transform& Transform::operator=(const RotationBase& r) diff --git a/test/geo_transformations.cpp b/test/geo_transformations.cpp index e9f05cfb6..ad3e02c8e 100644 --- a/test/geo_transformations.cpp +++ b/test/geo_transformations.cpp @@ -415,6 +415,9 @@ template void transformations() Rotation2D r2d1d = r2d1.template cast(); VERIFY_IS_APPROX(r2d1d.template cast(),r2d1); + t20 = Translation2(v20) * (Rotation2D(s0) * Scaling(s0)); + t21 = Translation2(v20) * Rotation2D(s0) * Scaling(s0); + VERIFY_IS_APPROX(t20,t21); } template void transform_alignment()