本征::四元数,从另一个四元数添加单轴旋转?

时间:2019-12-16 16:21:51

标签: math eigen quaternions

我在有实时轮播数据的应用程序中使用Eigen

我有两个对象在3d空间中旋转,并在XYZ轴上旋转。

我需要做的是将一个对象的Z轴旋转添加到另一个对象的旋转。 如果我使用欧拉角,但是使用四元数,这将很简单。

如何使用Eigen将一个四元数的单个轴添加到另一个?

例如,我有两次轮换。

Eigen::Quaternionf quatA(w1,x1,y1,z1);
Eigen::Quaternionf quatB(w2,x2,y2,z2);

让我们说这些等于以下XYZ顺序的欧拉角:

rotA = 10,20,30;
rotB = 20,30,40;

我需要做的是使用以下方法创建第三轮:

rotC = XB, YB, (ZA + ZB)
= 20, 30, 70;

我可以不转换为欧拉角吗?

我可以简单地创建另一个这样的四元数吗?

float newZ = z1 + z2; Eigen::Quaternionf quatC(w1,x1,y1,newZ);

还是我需要做类似的事情?

quatB.x() = 0;
quatB.y() = 0;

quatC = quatA * quatB;

或:

quatA.vec().z() = quatA.vec().z() + quatB.vec().z();

谢谢。

0 个答案:

没有答案