作者:不需要忆jf | 来源:互联网 | 2023-10-11 06:54
在问题三维空间中,计算一个向量v v v (或点v v v )绕另一个向量u u u旋转(theta的角度)的坐标。
方法野性的寒风旋转公式(Rodrigues’rotation formula ) :
v () vcosuvsIn) uv ) u )1cos) v )=vcos(thetau ) times vsin (theta ) u ) cdotv )1- cos (theta ) v )=
公式推导可见旋转2-3维空间旋转:野性寒风旋转式
示例代码中的以下代码计算围绕向量u u u将点v v旋转360后的点集。
importnumpyasnpimportmatplotlib.pyplotaspltfrommpl _ toolkits.MP lot3dimportaxes3ddefrodriguesrotate (v : NP.nd阵列勒v以矢量u为中心旋转角度,得到新的矢量P_new野性的寒风斯旋转公式:v'=vcos(uv ) sin ) v ) u ) cos ) )以u:为旋转轴的矢量) theta:旋转角度,这里缺省为在角度值returns: v_new:旋转之后获得的矢量,维度为)3) ' ' u=u/NP.LinaLG.norm(u ) 180 ) cos_theta=NP.cos ) theta v ) sin_thetaNP.dot(u,v ) u*(1-cos_theta ) returnv _ newv=NP.aray 3] ) ax.set_zlim ) [ 0,3 ] ) ax.quiver ) 0,0,u(0),u(1),u (2) v 360 ) 3360 v [ theta ]=Rodrigues RES