该.X3D
格式有一个有趣的轮换系统。与大多数包含围绕X
,Y
和Z
轴旋转值的格式不同,.X3D
它给出一个归一化的方向向量,然后给出一个以弧度为单位的值,以围绕该轴旋转。
例子:
The axis to rotate around: 0.000000 0.465391 0.885105
Rotation around that axis (in radians): 3.141593
我有从弧度到度的转换,但我需要XYZ
这些值的旋转值。
我们可以为基本矩阵变换构建一个序列以绕角度轴旋转。设轴单位向量为w
,角度Theta
。辅助值:
V = Sqrt(wx*wx + wz*wz)
W = Sqrt(wx*wx + wy*wy + wz*wz) //1 for unit dir vector
Cos(Alpha) = wz/V
Sin(Alpha) = wx/V
Cos(Beta) = V/W
Sin(Beta) = wy/W
Transformation sequence:
Ry(-Alpha) //rotation matrix about Y-axis by angle -Alpha
Rx(Beta)
Rz(Theta)
Rx(-Beta)
Ry(Alpha)
请注意,因为 is 轴与 Y 平行,所以应该使用通常关于 Y 的旋转矩阵(考虑方向符号),因为 V 值为零。
有相当复杂的Rodrigues 旋转公式,用于计算对应于围绕单位向量 w 指定的固定轴旋转角度 Theta 的旋转矩阵。
这里的显式矩阵(奇怪的格式图片):
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句