jam*_*456 3 c++ opengl quaternions eigen
我试图使用Eigen在2个四元数之间进行调整(认为这是最简单的).
我发现了两个不同的例子
一,
for(int i = 0; i < list.size(); i++)
{
Matrix3f m;
Quaternion<float,0> q1 = m.toRotationMatrix();
Quaternion<float,0> q3(q1.slerp(1,q2));
m_node->Rotation(q3.toRotationMatrix());
}
Run Code Online (Sandbox Code Playgroud)
第二,
Vec3 slerp(const Vec3& a, const Vec3& b, const Real& t)
{
Quaternionf qa;
Quaternionf qb;
qa = Quaternionf::Identity();
qb.setFromTwoVectors(a,b);
return (qa.slerp(t,qb)) * a;
}
Run Code Online (Sandbox Code Playgroud)
我真的不能说哪一个是正确的.关于此的文档并不多.任何人都可以告诉我是否应该使用不同的库?或者我如何使用eigen进行slerp.
gga*_*ael 11
在两个四元数之间执行SLERP只需调用slerp方法:
Quaterniond qa, qb, qres;
// initialize qa, qb;
qres = qa.slerp(t, qb);
Run Code Online (Sandbox Code Playgroud)
其中t是插值参数.
使用第二种变体。
两个代码片段都实现了 SLERP,但是第一个代码片段对列表中的元素执行某些操作,而您的代码片段没有显示这些元素。此外,第二种变体在计算上是更高效的,因为它不会绕过旋转矩阵。