7

として保存されている N 個の 3D ポイントを含むバッファがあり[XYZXYZXYZ ... XYZ]ます。

Eigen::Matrix<float, 3, N>このバッファは、 Eigen::Map を使用して に直接マップできます。アフィン変換 (つまり、Eigen::Matrix4f行列) を使用してポイントを変換するので、同じバッファーを固有構造にマップして、バッファーをEigen::Matrix<float, 4, N>最後の行に 1 のみが含まれるマトリックスと見なすことができるようにしたいと思います。つまり、各単一ポイントは同次ベクトル [XYZ 1]。

元のバッファをコピーしたり、各ポイントに変換を適用したりせずにこれを行う便利な方法はありますか?

4

1 に答える 1

6

次のように、各列に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()
于 2013-04-29T22:39:48.917 に答える