通过不同坐标系下的两个向量,求解旋转矩阵
问题
- 输入向量:已知在C坐标系中,W坐标系的x轴方向向量表达为vx\mathbf{v}_xvx 和 z轴方向向量表达为 vz\mathbf{v}_zvz。这些向量应满足:
- 单位长度:∥vx∥=1\|\mathbf{v}_x\| = 1∥vx∥=1 且 ∥vz∥=1\|\mathbf{v}_z\| = 1∥vz∥=1(即归一化)。
- 正交性:vx⋅vz=0\mathbf{v}_x \cdot \mathbf{v}_z = 0vx⋅vz=0(因为W坐标系的x轴和z轴在标准正交坐标系中互相垂直)。
- 输出:C相对于W坐标系的姿态的旋转部分,表示为旋转矩阵 R\mathbf{R}R。这个矩阵将点从C坐标系转换到W坐标系(即 pw=Rpc\mathbf{p}_w = \mathbf{R} \mathbf{p}_cpw=Rpc)。
求解步骤
由于C坐标系的x、y、z轴互相正交且遵循右手定则,y轴方向可以通过x轴和z轴的叉乘得到:
vy=vz×vx
\mathbf{v}_y = \mathbf{v}_z \times \mathbf{v}_x
vy=vz×vx
所以
[100]=Rvx\begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix} = \mathbf{R} \mathbf{v}_x
100=Rvx
这样子不好求R,但是转化为
vx=RT[100]
\mathbf{v}_x = \mathbf{R}^T \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix}
vx=RT100
很容易得到RT\mathbf{R}^TRT的第一列就是vx\mathbf{v}_xvx,以此类推,可知
RT=[vxvyvz]
\mathbf{R}^T = \begin{bmatrix} \mathbf{v}_x & \mathbf{v}_y & \mathbf{v}_z \end{bmatrix}
RT=[vxvyvz]
所以:
pw=Rpc=[vxTvyTvzT]pc\mathbf{p}_w = \mathbf{R} \mathbf{p}_c = \begin{bmatrix} \mathbf{v}_x^T \\ \mathbf{v}_y^T \\ \mathbf{v}_z^T \end{bmatrix} \mathbf{p}_c pw=Rpc=vxTvyTvzTpc