2016-10-03 3 views
0

Я пытаюсь использовать Eigen в существующем проекте, и я застрял.Eigen :: Quaternionf, как я могу получить доступ к значениям?

Я создаю quaternionf из матрицы, например, так:

Eigen::Quaternionf quats(path.block(0, 0, 3, 3));

Матрица действует, и эта конструкция должна работать.

Когда я пытаюсь вызвать х, у, г, ш значения, хотя, как это:

float test = quats.x();

Это не будет компилироваться, давая мне:

use of undefined type 'Eigen::internal::quaternionbase_assign_impl<MatrixDerived,-1,-1>'

в :

\eigen\src\Geometry\Quaternion.h

Что мне здесь не хватает?

Спасибо.

ответ

2

Проблема не есть quats.x(), но в инициализации:

Eigen::Quaternionf quats(path.block(0, 0, 3, 3)); 

Вы должны сказать Эйгену, что ваши передает матрицу 3х3 во время компиляции:

Eigen::Quaternionf quats(path.block<3,3>(0, 0)); 

или даже:

Eigen::Quaternionf quats(path.topLeftCorner<3,3>()); 
+0

Ах, отлично. Спасибо! – anti

Смежные вопросы