统一四元数-求组分B相对于组分A的欧拉角

问题描述 投票:-1回答:1

我无法理解四元数,并且已经尝试了多种运算符组合(在阅读/查看教程之后)。没有成功-只是表明我缺乏理解。甚至使用angles和atan2()进行了尝试-但真正显示给我的是万向节锁。我要解决的问题是:

我有一个在参考世界框架中具有一定旋转度的组件(例如A,一个立方体)(该旋转度实际上并不重要,可以定向为任何方向)。

然后,我在世界空间的其他地方有了另一个组件(例如B,另一个立方体)。该组件的旋转角度也无关紧要。

我最后想得到的是B相对于A的(欧拉角),BUT相对于A的参照系而不是世界空间。原因是我想根据B从A的方向向A添加力,然后可以用A.rigidbody.addRelativeForce(x, y, z);来做。

卡住。

c# unity3d quaternions euler-angles
1个回答
0
投票

感谢您的评论,我想我知道了。

[作为参考,考虑在相同(世界框架)坐标内的向量和旋转,代表原始图像但从局部框架坐标的角度来看是原始世界旋转的向量的新向量可以表示为:] >

static Vector3 createVectorForLocalRotationFrame(Vector3 worldVector, Quaternion worldRotation, bool normalise)
{
    Vector3 localVector = Quaternion.Inverse(worldRotation) * worldVector;

    if (normalise)
        localVector.Normalize();

    return localVector;                                                             
}

Normalize选项只是我所需要的。不要问我它是如何工作的,但它似乎是正确的。

© www.soinside.com 2019 - 2024. All rights reserved.