aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen
diff options
context:
space:
mode:
Diffstat (limited to 'Eigen')
-rw-r--r--Eigen/src/Geometry/Transform.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/Eigen/src/Geometry/Transform.h b/Eigen/src/Geometry/Transform.h
index da3187e3c..842a6bb4e 100644
--- a/Eigen/src/Geometry/Transform.h
+++ b/Eigen/src/Geometry/Transform.h
@@ -1034,6 +1034,17 @@ struct ei_transform_right_product_impl<Other,Mode, Dim,HDim, Dim,1>
{ return tr.linear() * other + tr.translation(); }
};
+// Affine * set of column vectors
+// FIXME use a ReturnByValue to remove the temporary
+template<typename Other, int Mode, int Dim, int HDim>
+struct ei_transform_right_product_impl<Other,Mode, Dim,HDim, Dim,Dynamic>
+{
+ typedef Transform<typename Other::Scalar,Dim,Mode> TransformType;
+ typedef Matrix<typename Other::Scalar,Dim,Dynamic> ResultType;
+ static ResultType run(const TransformType& tr, const Other& other)
+ { return (tr.linear() * other).colwise() + tr.translation(); }
+};
+
// Affine * homogeneous column vector
// FIXME added for backward compatibility, but I'm not sure we should keep it
template<typename Other, int Mode, int Dim, int HDim>