本文综合了几个相关的维基百科,加了点自己的理解,从比较基础的向量投影和叉积讲起,推导出罗德里格斯旋转公式。公式比较繁杂,如有错误,欢迎评论区指出。
对于向量的三维旋转问题,给定旋转轴和旋转角度,用罗德里格斯(Rodrigues)旋转公式可以得出旋转后的向量。另外,罗德里格斯旋转公式可以用旋转矩阵表示,即将三维旋转的轴-角(axis-angle)表示转变为旋转矩阵表示。
向量投影(Vector projection)
向量a在非零向量b上的向量投影指的是a在平行于向量b的直线上的正交投影。结果是一个平行于b的向量,定义为𝐚1=𝑎1𝐛̂ a1=a1b^,其中,𝑎1a1是一个标量,称为a在b上的标量投影,𝐛̂ b^是与b同向的单位向量。𝑎1=‖𝐚‖cos𝜃=𝐚⋅𝐛̂ =𝐚⋅𝐛‖𝐛‖a1=‖a‖cosθ=a⋅b^=a⋅b‖b‖,其中⋅⋅表示点积(又称标量积),‖𝐚‖‖a‖表示a的长度,𝜃θ表示a和b的夹角。标量投影有正负,正负号与夹角𝜃θ有关。
有了向量投影𝐚1a1,向量a可以表示为𝐚=𝐚1+𝐚2a=a1+a2,其中𝐚2a2称为a from b的vector rejection(没找到比较官方的翻译),也即a向正交于b的超平面的正交投影,𝐚2=𝐚−𝐚1=𝐚−(‖𝐚‖cos𝜃)𝐛̂ a2=a−a1=a−(‖a‖cosθ)b^。下图比较清晰地表示出𝐚a、𝐚1a1、𝐚2a2的关系。
图1 Projection of a on b(a1), rejection of a from b(a2)
当90∘<𝜃≤180∘90∘<θ≤180∘时,向量投影示意图如图2所示:
图2 大于90°时的向量投影示意图,此时a1与b的方向相反
记号
向量a在b上的向量投影用加粗的𝐚1a1表示,标量投影用不加粗的𝑎1a1。有时向量投影和vector rejection分别用𝐚∥𝐛a∥b和𝐚⊥𝐛a⊥b表示。
用a和b表示
当𝜃θ未知时,可通过a和b计算得出,cos𝜃=𝐚⋅𝐛‖𝐚‖‖𝐛‖cosθ=a⋅b‖a‖‖b‖,从而标量投影、向量投影和vector rejection可以分别表示如下:
- 标量投影:
𝑎1=‖𝐚‖cos𝜃=‖𝐚‖𝐚⋅&#x