2013-04-29 4 views
3

으로 저장된 N 개의 3D 점을 포함하는 버퍼가 있습니다.3D 점의 벡터를 Eigen의 동질성 표현으로 변환

이 버퍼는 Eigen :: Map을 사용하여 Eigen::Matrix<float, 3, N>에 직접 매핑 될 수 있습니다. 어파 변환 (즉, Eigen::Matrix4f 행렬)을 사용하여 점을 변환 할 것이므로 동일한 버퍼를 고유 구조에 매핑하여 버퍼를 Eigen::Matrix<float, 4, N> 행렬로 간주 할 수 있습니다. 마지막 행에는 1s, 즉 각 단일 점만 포함됩니다. 는 균질 벡터 [XYZ 1]로 표현된다.

각각의 단일 지점에 변환을 적용하는 원래의 버퍼 또는 을 복사 없이이 작업을 수행 할 수있는 편리한 방법이 있나요?

답변

3

이 같은 각각의 컬럼에 homogenous()을 적용 할 수

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

덕분에,이 실제로 작업을 수행합니다. 나는 방송 작전을 colwise 놓치고 있었다. 해답을 명확히하기 위해서 : 행렬을 취하여 열 벡터의 집합 (colwise)으로 간주하고 각 열의 vecotrs에 균등하게 적용합니다. – Pierluigi

관련 문제