【问题标题】:Rotating quaternion which is in another quaternion's frame?在另一个四元数的框架中旋转四元数?
【发布时间】:2021-06-13 16:21:24
【问题描述】:

我在飞机上安装了一个摄像头。
旋转 0,0,0 是飞机向北飞行,水平飞行。
相机 0,0,0 指向前方(通过鼻子)。

当飞机偏航(将其航向变为西 270°)并进入 45° 俯冲时,偏航、俯仰和滚动的欧拉角为 (-270, 45, 0)

此时,相机正处于相同的角度 (-270, 45, 0)。
不过,现在,摄影机操作员将摄影机视点抬高 90°,然后向右平移 90°。
我的直觉告诉我,相机现在应该指向 (0, 0, 45)。
NB 我不太担心旋转的迹象,atm

我可以将两组角度转换为四元数以简化旋转,但我不知道如何旋转相机的运动相对于飞机姿态。我必须旋转旋转,但要从地球参考系开始。

如何相对于另一个当前的 3D 旋转来旋转四元数?

var absoloutePlatform = Quaternion.RotationYawPitchRoll((float)ToRadians(yaw), (float)ToRadians(pitch), (float)ToRadians(roll));
var relativeSensor = Quaternion.RotationYawPitchRoll((float)ToRadians(yaw2), (float)ToRadians(pitch2), (float)ToRadians(roll2));

var absoluteQuaterion = [[ some calculation! ]]

var absoluteSensorAngles = absoluteQuaterion.GetYawPitchRoll();

【问题讨论】:

  • 所以只是为了确认一下,relativeSensor * absoloutePlatform 不是你的意思吗?我真的不明白你还有什么意思
  • @harold:这就是我最初阅读时的想法,但角度都是疯狂的......

标签: matrix-multiplication quaternions sharpdx rotational-matrices


【解决方案1】:

这一切都源于不清楚将四元数转换为欧拉时使用哪个“标准”。

我将我的平台/飞机(世界)旋转从欧拉转换为四元数。
然后将我的相对传感器角度(来自平台参考)转换为四元数。

我把它们相乘

var resultQ = platformQ * sensorQ;

然后使用 zyx 旋转顺序将结果转换回欧拉。

这给出了传感器在世界框架中的旋转。
也许这是航空的标准 - 我不知道。
但简短的回答是肯定的,将一个四元数相对于另一个旋转:将它们相乘。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    相关资源
    最近更新 更多