请问,三维向量a(a1,a2,a3)逆时针围绕三维向量b(b1,b2,b3)转X度之后,如何计算得到的新向量?

问题描述:

请问,三维向量a(a1,a2,a3)逆时针围绕三维向量b(b1,b2,b3)转X度之后,如何计算得到的新向量?

当然是可以的,只不过很繁,方法有二.
首先我认为b(b1,b2,b3)是单位向量,若不是先化成单位向量,以下都是按单位向量计算.
法一:
设得到的向量是c(c1,c2,c3).他满足三个条件.
1、dot(c,b)=dot(a,b)
2、=x
3、|c|=|a|
应用这三个条件,列方程就可以解出c,但是很繁的.
(注:其中dot表示点乘,cross表示叉乘,表示两向量夹角,||表示求向量长度)
法二:
先把坐标系做一个变换,使得b向量成为新坐标系中的z轴,再来做旋转x度的变换,之后再变换回去就得到了c向量.
设构造的一个A矩阵,它是正交矩阵,它是坐标变换的矩阵.
那么a向量变过去成为a'=Aa,
在做旋转变换,设T是旋转x度的变换矩阵.旋转后变作a''=TAa.
在变回去 c=a'''=A'TAa
总之c=A'TAa
其中:
c=
[c1
c2
c3]
;
a=
[a1
a2
a3]
;
A =
[ b2/(b2^2+b1^2)^(1/2),-b1/(b2^2+b1^2)^(1/2),0]
[ b1/(b2^2+b1^2)^(1/2)*b3,b3*b2/(b2^2+b1^2)^(1/2),(b3^2-1)/(b2^2+b1^2)^(1/2)]
[ b1,b2,b3]
;
T=
[ cos(x),-sin(x),0]
[ sin(x),cos(x),0]
[ 0,0,1]
如果要表示具体的结果很烦的,这个形式还算是简洁了.
我用matlab算了一下,结果很繁.
把 各矩阵代入得
c=
[c1
c2
c3]
=
[ (a1*b2^2*cos(x)+a1*b1^2*b3^2*cos(x)+a1*b1^2*b2^2+a1*b1^4-b1*a2*b2*cos(x)-a2*b3*sin(x)*b1^2-a2*b3*b2^2*sin(x)+a2*b3^2*b2*b1*cos(x)+b1*a2*b2^3+b1^3*a2*b2-a3*b2*sin(x)*b3^2+a3*b2*sin(x)+a3*b1*b3^3*cos(x)-a3*b3*cos(x)*b1+a3*b1*b3*b2^2+a3*b1^3*b3)/(b2^2+b1^2)
(-a1*b1*b2*cos(x)+a1*b3*b2^2*sin(x)+a1*b3*sin(x)*b1^2+a1*b3^2*b2*b1*cos(x)+a1*b1*b2^3+a1*b1^3*b2+a2*b1^2*cos(x)+a2*b3^2*b2^2*cos(x)+a2*b2^4+a2*b2^2*b1^2+a3*b1*sin(x)*b3^2-a3*b1*sin(x)+a3*b3^3*b2*cos(x)-a3*b3*b2*cos(x)+a3*b3*b2^3+a3*b3*b2*b1^2)/(b2^2+b1^2)
(a1*b2*sin(x)*b3^2-a1*b2*sin(x)+a1*b1*b3^3*cos(x)-a1*b1*b3*cos(x)+a1*b1*b3*b2^2+a1*b1^3*b3-a2*b1*sin(x)*b3^2+a2*b1*sin(x)+a2*b3^3*b2*cos(x)-a2*b3*b2*cos(x)+a2*b3*b2^3+a2*b3*b2*b1^2+a3*cos(x)*b3^4-2*a3*b3^2*cos(x)+a3*cos(x)+a3*b3^2*b2^2+a3*b1^2*b3^2)/(b2^2+b1^2)]