From 124ec71c50b8a5dd8e2ebd3590e067367d1040a5 Mon Sep 17 00:00:00 2001 From: Benoit Jacob Date: Sun, 24 Aug 2008 21:25:04 +0000 Subject: [PATCH] allow constructing Transform from small-matrix (like fromPosOrientScale but with trivial Pos and Scale) --- Eigen/src/Geometry/Transform.h | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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