Dwa*_*yne 8 math 3d vector matrix quaternions
我正在尝试在我的爱好游戏引擎中使用轴角向量进行旋转.这是沿旋转轴的3分量矢量,旋转长度以弧度表示.我喜欢他们因为:
但是,我有一个紧密的循环,根据角速度更新我的所有物体(数万)的旋转.目前,我知道组合两个旋转轴向量的唯一方法是将它们转换为四元数,将它们相乘,然后将结果转换回轴/角度.通过剖析,我发现这是一个瓶颈.有谁知道更直接的方法?
如果您的旋转向量是单位长度,您的表示相当于四元数旋转。如果您不想使用某些固定的四元数数据结构,您应该简单地确保旋转向量具有单位长度,然后计算出等效的四元数乘法/倒数计算来确定聚合旋转。您也许能够减少乘法或加法的次数。
如果你的角度是唯一正在改变的东西(即旋转轴是恒定的),那么你可以简单地使用角度的线性缩放,并且,如果你愿意,将其修改为范围 [0, 2π)。因此,如果每秒旋转速率为 α raidans,从时间 t 0处的初始角度 θ 0开始,则时间 t 处的最终旋转角度由下式给出:
θ(t) = θ 0 +α(tt 0 ) mod 2π
然后,您只需将该旋转应用于向量集合即可。
如果这些都不能提高您的性能,您应该考虑使用固定的四元数库,因为这些东西已经针对您正在讨论的应用程序类型进行了优化。
归档时间: |
|
查看次数: |
4926 次 |
最近记录: |