如何应用欧拉角实现三维向量绕指定点旋转
三维点B绕点A按给定欧拉角旋转的计算方法
核心逻辑
绕非原点的点做旋转,本质是平移到原点→做旋转→平移回原坐标系的三步操作,具体实现如下:
具体步骤
平移变换:将旋转中心A设为原点
先计算点B相对于点A的局部向量,消去A的位置偏移:V = B - A其中
V是3维列向量,每个分量对应B和A对应坐标的差值。应用旋转矩阵
首先确认你生成的3×3旋转矩阵R和手里的欧拉角规则匹配:- 欧拉角的旋转顺序(如ZYX/XYZ等)、内外旋定义要和生成旋转矩阵的规则完全一致,这是三维旋转计算出错的最高频原因
- 如果你用列向量存储坐标,直接左乘旋转矩阵即可:
V_rot = R · V - 如果你用行向量存储坐标,需要右乘旋转矩阵的转置:
V_rot = V · R^T
得到旋转后的局部向量
V_rot。平移回原全局坐标系
把旋转后的局部向量加回旋转中心A的坐标,得到最终的旋转后位置:B_rot = V_rot + A
简单验证示例
我们用简化的场景验证逻辑正确性:
- 已知A=(1,1,0),B=(2,1,0),欧拉角为绕Z轴旋转90°,对应旋转矩阵:
R = [[0, -1, 0], [1, 0, 0], [0, 0, 1]] - 第一步计算局部向量:
V = (2-1, 1-1, 0) = (1, 0, 0) - 第二步应用旋转矩阵:
V_rot = R·V = (0, 1, 0) - 第三步平移得到结果:
B_rot = (0+1, 1+1, 0) = (1, 2, 0),和直观预期的旋转结果完全一致。
内容的提问来源于stack exchange,提问作者PersonMon
相关产品推荐
相关产品推荐

