2013-04-29 18 views
3

我有一个包含N个3D点的缓冲区,存储为[XYZXYZXYZ ... XYZ]将三维点的矢量转换为特征的均匀表示

该缓冲区可以使用Eigen :: Map直接映射到Eigen::Matrix<float, 3, N>。 由于我将使用仿射变换(即Eigen::Matrix4f矩阵)来转换点,我想将相同的缓冲区映射到特征结构,该特征结构允许我将缓冲区视为Eigen::Matrix<float, 4, N>矩阵,其中最后一行仅包含1,即每个单个点由均匀矢量[XYZ 1]表示。

有没有一种便捷的方式来做到这一点没有复制原始缓冲应用转换上的每个单点

回答

3

你可以在这样的每一列应用homogenous()

mat * Map<Matrix<float, 3, Dynamic> >(data,3,N).colwise().homogeneous() 
+0

谢谢,这确实是做这项工作。我错过了广播操作colwise。 为了澄清答案:取矩阵并将其视为列向量的集合(colwise),然后对每列向量应用齐次。 – Pierluigi 2013-04-30 15:59:59