如何围绕自己的轴旋转对象?

时间:2013-11-13 08:18:16

标签: c# math 3d rotation geometry

我在解决问题时遇到了问题。

我的问题涉及获取物体角度的3D表示,然后在它自己的轴上对该物体应用旋转。

例如,一架飞机:

  • 标题45(东北)
  • Pitch 45(Nose Up)
  • Bank 45(Banked Left)

它在自己的偏航轴上旋转-90度应大致为:

  • 标题〜-9.8(北西北方向)
  • Pitch -30(Nose Down)
  • Bank 54.5(Banked Left)

(正如计算纯粹使用另一个程序进行猜测,使飞机成为自己的孩子并旋转90度,然后尝试匹配方向......)

任何人都可以解释如何计算这种旋转吗?甚至指引我走上正确的道路来学习如何?

我尝试将基本旋转矩阵应用于角度(用于围绕原点的旋转点),但它仅相对于基准x / y / z轴而不是飞机的旋转(因此结果)从上面将是(-45,45,45)

出于数学目的,旋转不涉及点坐标,只涉及3个表示角度。

我不想使用任何外部库。

虽然不相关,但这适用于C#应用程序。

非常感谢你们的帮助和见解!

1 个答案:

答案 0 :(得分:1)

旋转矩阵是一个很好的开始,但你也需要一个平移矩阵来使原点正确。

如果你想手动完成,你需要带旋转矩阵的线性代数。它需要一些数学技能。

基本上这个(下面)说明:将对象移动到x / y / z /的原点,应用旋转矩阵并将其放回原始位置。

我必须警告你,手工操作很难。

http://en.wikipedia.org/wiki/Translation_%28geometry%29

http://en.wikipedia.org/wiki/Rotation_matrix

我的熟人曾经说过一次:

r'j(t)= r'0(t)+Ω(t)x [rj(t) - r0(t)]

http://en.wikipedia.org/wiki/Euler%27s_rotation_theorem