解决绕任意向量旋转在
4D下会让你发疯。是的,有一些方程可以解决这个问题,比如
3D旋转的欧拉-罗德里格斯公式扩展到4D, 但所有方程都需要解决方程组,而且对于我们在
4D中使用起来真的不直观。
我正在使用平行于平面的旋转(类似于
3D中围绕主轴的旋转)。在
4D中有6个主轴(
XY、YZ、ZX、XW、YW、ZW
),所以只需创建旋转矩阵(类似于
3D)。我在
4D中使用
5x5齐次变换矩阵,因此旋转看起来像这样:
xy:
( c , s ,0.0,0.0,0.0)
(-s , c ,0.0,0.0,0.0)
(0.0,0.0,1.0,0.0,0.0)
(0.0,0.0,0.0,1.0,0.0)
(0.0,0.0,0.0,0.0,1.0)
yz:
(1.0,0.0,0.0,0.0,0.0)
(0.0, c , s ,0.0,0.0)
(0.0,-s , c ,0.0,0.0)
(0.0,0.0,0.0,1.0,0.0)
(0.0,0.0,0.0,0.0,1.0)
zx:
( c ,0.0,-s ,0.0,0.0)
(0.0,1.0,0.0,0.0,0.0)
( s ,0.0, c ,0.0,0.0)
(0.0,0.0,0.0,1.0,0.0)
(0.0,0.0,0.0,0.0,1.0)
xw:
( c ,0.0,0.0, s ,0.0)
(0.0,1.0,0.0,0.0,0.0)
(0.0,0.0,1.0,0.0,0.0)
(-s ,0.0,0.0, c ,0.0)
(0.0,0.0,0.0,0.0,1.0)
yw:
(1.0,0.0,0.0,0.0,0.0)
(0.0, c ,0.0,-s ,0.0)
(0.0,0.0,1.0,0.0,0.0)
(0.0, s ,0.0, c ,0.0)
(0.0,0.0,0.0,0.0,1.0)
zw:
(1.0,0.0,0.0,0.0,0.0)
(0.0,1.0,0.0,0.0,0.0)
(0.0,0.0, c ,-s ,0.0)
(0.0,0.0, s , c ,0.0)
(0.0,0.0,0.0,0.0,1.0)
其中c=cos(a),s=sin(a)
,a
是旋转角度。旋转轴通过坐标系原点(0,0,0,0)
。更多信息请参见以下内容: