三维旋转(根据转轴和角度)的公式。罗德里格旋转公式

来源:互联网 发布:网易uu加速器mac 编辑:程序博客网 时间:2024/04/30 15:40

(这是从维基百科拿来的公式)

在三维旋转理论体系中,罗德里格旋转公式(根据欧林·罗德里格命名)是在给定转轴和旋转角度后,旋转一个向量的有效算法。如果v是在\mathbb{R}^3中的向量,k是转轴的单位向量,θ是旋转角度(根据叉乘的方向确定正负号),那罗德里格旋转公式表达为:

\mathbf{v}_\mathrm{rot} = \mathbf{v} \cos\theta + (\mathbf{k} \times \mathbf{v})\sin\theta  + \mathbf{k} (\mathbf{k} \cdot \mathbf{v}) (1 - \cos\theta).


(以下是推导出的公式,可以直接编程使用了)


输入:

V = (vx, vy, vz) = (u, v, w),这是待旋转的一个向量。

K = (kx, ky, kz) = (x, y, z),这是单位化后的转轴。

输出:Vrot

计算过程及公式:

Vrot = V cosT + (K * V) sinT + K ( K . V) (1- cosT)

 = (u, v, w) cosT + (yw - zv, zu - xw, xv - yu) sinT + (x, y, z)(xu + yv + zw)(1 - cosT)


 Vrot.x = u cosT + (yw - zv) sinT + x (xu + yv + zw) ( 1- cosT)

 Vrot.y = v cosT + (zu - xw) sinT + y (xu + yv + zw) ( 1- cosT)

 Vrot.z = w cosT + (xv - yu) sinT + z (xu + yv + zw) ( 1- cosT)




0 0