在Eigen中将3D点的矢量转换为均匀表示

时间:2013-04-29 13:42:52

标签: 3d geometry eigen homogenous-transformation

我有一个包含N个3D点的缓冲区,存储为[XYZXYZXYZ ... XYZ]

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

如果没有复制原始缓冲区在每个单点上应用转换,是否有方便的方法?

1 个答案:

答案 0 :(得分:4)

您可以在每列上应用homogenous(),如下所示:

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