三维旋转表示-2(旋转向量及罗德里格斯旋转公式推导)
旋转向量
两个参数:
- 旋转轴:三维单位向量,表示旋转轴方向;
- 旋转角度:默认逆时针为正。
旋转向量转换旋转矩阵
罗德里格斯旋转公式(Rodrigues’ Rotation Formula):
其中:
- n :作为旋转轴的单位向量
- α :旋转角度
推导过程
解释以下名称的意义:
- s :要被旋转的向量
- s’:旋转后的向量
第一步: 以 n 为轴计算直角坐标系的另一条轴 b 向量,如图所示:
- 计算 s 向量在 n 向量上的分量向量,因为 n 向量为单位向量,所以 s 向量 点乘 n向量就是 s 在 n 向量上的投影长度,在乘以 n 向量就得到了投影向量。
- 通过向量相减,可以得到 s 向量在 n 向量垂直方向的投影向量
- 归一化后可以得到单位向量 b,作为直角坐标系的另一个轴。
第二步: 计算直角坐标系的第三条轴 c 向量,如图所示:
- 通过叉乘 n 向量和 b 向量,就可以得到第三个轴向量 c,也是需要进行归一化,得到单位向量。
这里需要注意,下边两个叉乘是相等的:
因为:
带入上边的公式可以推出相等。
第三步: 计算旋转后向量 s’ 的投影向量。
- 将 s 向量绕 n 向量旋转 α 度,可以求出在 b 向量和 c 向量所在平面上的投影向量
- s’ 向量在 n 向量上的投影向量,加上在b c 向量所在平面的投影向量,就得到了 s’ 向量。
- 带入之前求出的各个向量
- 约掉分子分母相同的项:
- 再带入 s 的投影向量
- 整理相同项
- 提出 s 向量,剩下的就是罗德里格斯公式
至此,推导完成!
参考
- GAMES101-现代计算机图形学入门-闫令琪 Lecture 04 Transformation Cont.