如何定义一个旋转矩阵,允许我将每个点(矢量)从第一个半球变换到第二个半球的对应点?
如果可能的话,使用N的球面坐标作为旋转角度的旋转矩阵会很方便,$ \ theta $是$ 0 $到$ \ pi $的极角(直观地从Y到 - ) Y)和$ \ phi $是方位角,从$ 0 $到$ 2 \ pi $(从X再回到X通过+ Z,-X,-Z)。
答案 0 :(得分:0)
构建旋转矩阵的第一步是定义(3)绕单轴旋转的顺序。在你的情况下,有2个角度,2个旋转就足够了(有phi和theta)。
我总是提到this structure from wikipedia 对于phi和theta的使用我可能是错的(关于你的约定),但我尽量清楚
我的个人序列可能是:首先围绕[0,2pi]中的角度phi绕Y轴旋转,以对准" old" X和Z轴到"新的"假设N与Y平行。 然后绕着" new =已经旋转"旋转角度θ。 Z轴带来"新" Y轴沿N.
所以,让我们构建我们的矩阵。围绕Y的旋转具有这种结构(我使用;断开线,R总是3x3)
R_y = [cos(phi) 0 sin(phi); 0 1 0; -sin(phi) 0 cos(phi)]
R_z = [cos(phi) -sin(phi) 0; sin(phi) cos(phi) 0; 0 0 1]
从旧系统到新系统的完整旋转是两个矩阵的乘积,记住哪一个首先出现
R = R_z*R_y
实际上我们想要在旧系统中变换一组3D坐标a,因此它是:
b = R*a = R_z*R_y*a = R_z*(R_y*a)
并获得新坐标b