diff --git a/Eigen/src/Geometry/Transform.h b/Eigen/src/Geometry/Transform.h index 1b68a37e5..65d52b51d 100644 --- a/Eigen/src/Geometry/Transform.h +++ b/Eigen/src/Geometry/Transform.h @@ -89,10 +89,19 @@ public: inline Transform& operator=(const Transform& other) { m_matrix = other.m_matrix; return *this; } - /** Constructs and initializes a transformation from a (Dim+1)^2 matrix. */ + /** Constructs and initializes a transformation from a Dim^2 or a (Dim+1)^2 matrix. */ template inline explicit Transform(const MatrixBase& other) - { m_matrix = other; } + { + if(OtherDerived::RowsAtCompileTime == Dim) + { + linear() = other; + translation().setZero(); + m_matrix(Dim,Dim) = Scalar(1); + m_matrix.template block<1,Dim>(Dim,0).setZero(); + } + else m_matrix = other; + } /** Set \c *this from a (Dim+1)^2 matrix. */ template