求矩形棱柱绕中心在x、y、z三轴旋转后的顶点坐标计算公式
矩形棱柱三维旋转后顶点坐标通用计算方法
基础参数定义
首先统一所有输入参数的定义:
- 棱柱几何参数:x轴方向边长
l,y轴方向边长w,z轴方向边长h,棱柱中心在全局坐标系下的固定坐标为(Cx, Cy, Cz) - 旋转参数:绕x轴旋转角度
α、绕y轴旋转角度β、绕z轴旋转角度γ,默认遵循右手定则:从坐标轴正方向看向原点时,逆时针旋转为角度正方向,计算时需先将角度转换为弧度 - 旋转约定:以下方法默认是绕自身坐标轴依次旋转(内旋),顺序为x轴→y轴→z轴,如果你的旋转顺序或旋转坐标系约定不同,调整旋转矩阵的相乘顺序即可。
计算步骤
1. 生成未旋转的局部顶点坐标
以棱柱自身中心为局部坐标系原点,未发生旋转时,棱柱共8个顶点的局部坐标为所有正负组合:
(±l/2, ±w/2, ±h/2)
共8组取值,分别对应棱柱的8个顶点。
2. 构造三维旋转矩阵
三个坐标轴的基础旋转矩阵分别为:
- 绕x轴旋转α的矩阵
Rx:
[ [1, 0, 0 ], [0, cos(α), -sin(α) ], [0, sin(α), cos(α) ] ]
- 绕y轴旋转β的矩阵
Ry:
[ [cos(β), 0, sin(β) ], [0, 1, 0 ], [-sin(β), 0, cos(β) ] ]
- 绕z轴旋转γ的矩阵
Rz:
[ [cos(γ), -sin(γ), 0], [sin(γ), cos(γ), 0], [0, 0, 1] ]
按x→y→z的内旋顺序,总旋转矩阵R为三个矩阵的乘积:R = Rz × Ry × Rx
注意:矩阵乘法不满足交换律,若旋转顺序变化,需调整矩阵相乘的顺序,例如旋转顺序为z→y→x时,总旋转矩阵为R = Rx × Ry × Rz
3. 计算最终全局坐标
对每一个初始局部顶点P_local = (x, y, z):
- 先将其与总旋转矩阵
R相乘,得到旋转后的局部坐标P_rot = R · P_local - 再叠加全局坐标系下的中心偏移量,得到该顶点的最终全局坐标:
P_final.x = P_rot.x + Cx P_final.y = P_rot.y + Cy P_final.z = P_rot.z + Cz
内容的提问来源于stack exchange,提问作者FluxSwirl
相关产品推荐
相关产品推荐

