2015-08-06 2 views
1

У меня есть Eigen::Quaternion, и я хочу его преобразовать Компоненты x, y, z, w в double.Компоненты Quaternion для Float (Eigen)

Простое назначение как это не работает, потому что компоненты имеют тип Scalar. Это то, что я пробовал:

Eigen::Quaternion<float> q; 
q = Eigen::AngleAxis<float>(2, Eigen::Vector3f(0,0,1)); 
float x = q.x; 

Документация на Scalar типа является слабым. Кто-нибудь знает как это сделать?

ответ

2

Scalar не является типом данных, а аргументом шаблона Eigen::Quaternion.

Так что если вы заявляете Eigen::Quaternion<float> q это средство для этого кватерниона, Scalar установлено на float.

То, что вы отсутствовали в вашем примере кода является то, что для извлечения x компонента необходимо вызвать методу Названный x().

В следующем примере показано, как это сделать:

#include <iostream> 
#include <Eigen/Geometry> 

int main() 
{ 
    Eigen::Quaternion<float> q; 
    q = Eigen::AngleAxis<float>(2, Eigen::Vector3f(0,0,1)); 
    float x = q.x(); 

    std::cout << x << std::endl; 
}