Fix preshear transformation.
diff --git a/Eigen/src/Geometry/Transform.h b/Eigen/src/Geometry/Transform.h index 077441d..fd3fc58 100644 --- a/Eigen/src/Geometry/Transform.h +++ b/Eigen/src/Geometry/Transform.h
@@ -943,7 +943,8 @@ const Scalar& sx, const Scalar& sy) { EIGEN_STATIC_ASSERT(int(Dim) == 2, YOU_MADE_A_PROGRAMMING_MISTAKE) EIGEN_STATIC_ASSERT(Mode != int(Isometry), THIS_METHOD_IS_ONLY_FOR_SPECIFIC_TRANSFORMATIONS) - m_matrix.template block<Dim, HDim>(0, 0) = LinearMatrixType(1, sx, sy, 1) * m_matrix.template block<Dim, HDim>(0, 0); + m_matrix.template block<Dim, HDim>(0, 0) = + LinearMatrixType({{1, sy}, {sx, 1}}) * m_matrix.template block<Dim, HDim>(0, 0); return *this; }
diff --git a/test/geo_transformations.cpp b/test/geo_transformations.cpp index 2fddf55..a9eb87e 100644 --- a/test/geo_transformations.cpp +++ b/test/geo_transformations.cpp
@@ -273,6 +273,12 @@ .matrix() .isIdentity(test_precision<Scalar>())); + t20.setIdentity(); + t20.shear(Scalar(2), Scalar(3)); + Transform2 t23 = t20 * t21; + t21.preshear(Scalar(2), Scalar(3)); + VERIFY_IS_APPROX(t21, t23); + // Transform - new API // 3D t0.setIdentity();