Pie*_*igi 5 3d geometry homogenous-transformation eigen
我有一个包含N个3D点的缓冲区,存储为[XYZXYZXYZ ... XYZ]。
此缓冲区可以Eigen::Matrix<float, 3, N>使用Eigen :: Map 直接映射到。由于我将使用仿射变换(即Eigen::Matrix4f矩阵)对点进行变换,因此我想将同一缓冲区映射到本征结构,从而使我可以将缓冲区视为Eigen::Matrix<float, 4, N>最后一行仅包含1 的矩阵,即每个单点由齐次向量[XYZ 1]。
有没有一种简便的方法可以执行此操作,而无需复制原始缓冲区或对每个单点应用转换?
您可以像这样在每一列上应用homogenous():
Matrix4f mat = ...; // your affine transformation stored as a 4x4 matrix
float *data = ...; // your raw buffer storing 3D point as [XYZXYZXYZ...]
mat * Map<Matrix<float, 3, Dynamic> >(data,3,N).colwise().homogeneous()
Run Code Online (Sandbox Code Playgroud)