【发布时间】:2017-04-25 09:03:58
【问题描述】:
我有一个四元数表示对象的方向(黄色框和球体)。我想知道是否可以将该四元数拆分为其他四元数,从而为我们提供每个局部轴(X、Y 和 Z)的旋转。
到目前为止,我一直在做的是获取欧拉表示并使用它,但这不是我特定情况的正确解决方案:
给定两个点(蓝色框),我想限制对象的方向,使其不能指向灰色平面之外,即使我的四元数看起来超出了那个平面。
我想拆分(分解)四元数,因为当我的对象到达平面的限制(例如,右侧)时,我想让它停留在那里(在那个组件中),然后在垂直组件中旋转我的对象,使用新的拆分四元数之一。
我正在使用 Unity。
我希望我的问题可以理解 :)
【问题讨论】:
-
Quaternion rotation = Quaternion.Euler(new Vector3(transform.eulerAngles.x, 0, 0));是否适用? -
感谢@Peh 的编辑。谢谢 Ryan,但我想避免欧拉角,因为原始四元数来自外部 IMU,并且用欧拉角限制方向我遇到了一些麻烦
-
Quaternion.eulerAngles 是一个东西,但我怀疑这就是你已经在使用的东西。我知道
wxyz值根本无济于事,因为它们不完整。我能想到的最好的方法是在两个蓝色框上计算 EulerAngleTo()(您必须编写此方法),并检查其 X 和 Y 分量是否大于 0(或小于,视情况而定)。 -
stackoverflow.com/questions/3684269/… 1.Decompose 2 Limit 3. Compose
标签: unity3d split rotation quaternions euler-angles