我有一个包含N个3D点的缓冲区,存储为[XYZXYZXYZ ... XYZ]
。
可以使用Eigen :: Map将此缓冲区直接映射到Eigen::Matrix<float, 3, N>
。
因为我将使用仿射变换(即Eigen::Matrix4f
矩阵)转换点我想将相同的缓冲区映射到一个特征结构,允许我将缓冲区视为Eigen::Matrix<float, 4, N>
矩阵,其中仅最后一行包含1,即每个单点由均匀向量[XYZ 1]表示。
如果没有复制原始缓冲区或在每个单点上应用转换,是否有方便的方法?
答案 0 :(得分:4)
您可以在每列上应用homogenous(),如下所示:
mat * Map<Matrix<float, 3, Dynamic> >(data,3,N).colwise().homogeneous()