You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算球体表面点经Roll、Pitch、Yaw三维旋转后的坐标?

解决方法:基于Unity旋转规则的手动坐标计算

首先明确Unity的核心旋转规则:采用左手坐标系,旋转顺序固定为 Yaw(绕Y轴)→ Pitch(绕X轴)→ Roll(绕Z轴),角度方向定义为从轴正方向看向原点时的顺时针旋转。要手动计算旋转后的坐标,需通过旋转矩阵分步相乘实现,具体步骤如下:

1. 角度转弧度

三角函数计算需使用弧度,转换公式:弧度 = 角度 × π / 180
针对你的示例:

  • Yaw(α=15°):≈0.2618 rad,cosα≈0.9659,sinα≈0.2588
  • Pitch(β=30°):≈0.5236 rad,cosβ≈0.8660,sinβ≈0.5
  • Roll(γ=45°):≈0.7854 rad,cosγ≈0.7071,sinγ≈0.7071

2. 单个轴的旋转矩阵

每个轴的旋转矩阵如下(向量按列向量处理,矩阵乘法顺序为从右到左,即先应用Yaw,再Pitch,最后Roll):

绕Y轴(Yaw)旋转矩阵

[ cosα   0   sinα ]
[  0     1    0   ]
[ -sinα  0   cosα ]

绕X轴(Pitch)旋转矩阵

[ 1    0      0     ]
[ 0  cosβ  -sinβ ]
[ 0  sinβ   cosβ ]

绕Z轴(Roll)旋转矩阵

[ cosγ  -sinγ  0 ]
[ sinγ   cosγ  0 ]
[ 0       0    1 ]

3. 分步计算旋转后的坐标

原坐标为 P = (1, 0, 0),按旋转顺序逐步计算:

第一步:应用Yaw旋转

将P与Yaw矩阵相乘,得到中间向量P1:

P1.x = 1×cosα + 0×0 + 0×(-sinα) = cosα ≈ 0.9659
P1.y = 1×0 + 0×1 + 0×0 = 0
P1.z = 1×sinα + 0×0 + 0×cosα = -sinα ≈ -0.2588

P1 ≈ (0.9659, 0, -0.2588)

第二步:应用Pitch旋转

将P1与Pitch矩阵相乘,得到中间向量P2:

P2.x = P1.x×1 + P1.y×0 + P1.z×0 = 0.9659
P2.y = P1.x×0 + P1.y×cosβ + P1.z×(-sinβ) = 0 + 0 + (-0.2588)×(-0.5) ≈ 0.1294
P2.z = P1.x×0 + P1.y×sinβ + P1.z×cosβ = 0 + 0 + (-0.2588)×0.8660 ≈ -0.2241

P2 ≈ (0.9659, 0.1294, -0.2241)

第三步:应用Roll旋转

将P2与Roll矩阵相乘,得到最终坐标P3:

P3.x = P2.x×cosγ + P2.y×(-sinγ) + P2.z×0 ≈ 0.9659×0.7071 - 0.1294×0.7071 ≈ 0.5915
P3.y = P2.x×sinγ + P2.y×cosγ + P2.z×0 ≈ 0.9659×0.7071 + 0.1294×0.7071 ≈ 0.7745
P3.z = P2.x×0 + P2.y×0 + P2.z×1 = -0.2241

最终结果

原坐标(1,0,0)经过[Roll=45°, Pitch=30°, Yaw=15°]旋转后,新坐标约为:
(0.5915, 0.7745, -0.2241)

内容的提问来源于stack exchange,提问作者Blast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 17:40:41