1

我有一个使用四元数的对象。这个四元数在用户的按键上得到更新,以允许对象旋转它的内轴。旋转效果很好。当处于默认状态时(在用户调整旋转之前)我的四元数读取 w:1, x:0, y:0, z:0

我希望这个对象总是通过它的内部 z 轴在空间中向前移动 - THREE.Vector3(0,0,-1)。如何使用 quat 知道它的 z 轴在哪里并向前移动?

例如 - 当我的四元数读取 w:0.7, x:0.7, y:0, z:0 - 对象被旋转以使其 z 轴指向上方。有没有办法通过它的内轴移动一个物体?

这是一个 jsfiddle 示例:http ://bitly.com/RXPy5w - 我希望正方形始终相对于它的 z 轴向前移动

任何帮助将不胜感激。

4

2 回答 2

2

这里的四元数代表三个空间中的旋转。您需要首先指定要旋转的初始方向。将其设为起始方向方向的单位向量。

现在,要沿当前方向的方向行进,您可以通过当前四元数描述的旋转来旋转初始方向向量。现在你有一个指向正确方向的单位向量。

最后,当然,您可以缩放该单位向量以表示非单位距离的运动,将其添加到您的当前位置,您就完成了。

于 2012-11-08T01:28:33.730 回答
2

您所要做的就是在渲染循环中添加以下行:

airplane.translateZ( 1 );

更新的小提琴: http: //jsfiddle.net/Lc8gH/21/ 享受吧!

顺便说一句,你不能“翻译一个四元数”。继续学习,直到你理解这段代码在做什么。

于 2012-11-08T04:42:24.543 回答