2013-04-29 16 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