2015-05-18 5 views
3

Я пытаюсь преобразовать PCl pointXYZ к собственному векторуПреобразование типа ПКЛ точка XYZ в Эйген Vector 4f

Eigen::Vector4f min (minPnt.x, minPnt.y, minPnt.z); 
Eigen::Vector4f max (maxPnt.x, maxPnt.y, maxPnt.z); 

где minPnt и maxPnt являются типа ПКЛ :: PointXYZ. Однако, я получаю сообщение об ошибке «ошибка C2338: THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE». Не могли бы вы предложить некоторые другие подходы или дайте мне знать, если мой подход ошибочен.

ответ

2

Я решил вышеупомянутую проблему следующим кодом.

auto x_min = static_cast<float>(minPnt.x); 
auto y_min = static_cast<float>(minPnt.y); 
auto z_min = static_cast<float>(minPnt.z); 

auto x_max = static_cast<float>(maxPnt.x); 
auto y_max = static_cast<float>(maxPnt.y); 
auto z_max = static_cast<float>(maxPnt.z); 

Eigen::Vector4f min(x_min, y_min, z_min, 0.0); 
Eigen::Vector4f max(x_max, y_max, z_max, 0.0); 

Если есть лучший подход, предложите.

1

eigen :: vector4f ищет 4 поплавки, но вы только дали ему 3 (x, y, z). попробуйте добавить 0 в конец:

Eigen :: Vector4f min (minPnt.x, minPnt.y, minPnt.z, 0);
Eigen :: Vector4f max (maxPnt.x, maxPnt.y, maxPnt.z, 0);

+0

Или 1, если вы используете (x, y, z, w) координаты –