Преобразовать тип точки pcl XYZ в собственный вектор 4f

Я пытаюсь преобразовать pcl pointXYZ в собственный вектор

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

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

4

Решение

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

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);

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

3

Другие решения

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);

1

По вопросам рекламы [email protected]