計算兩個向量之間的旋轉矩陣

2021-10-01 03:01:49 字數 887 閱讀 3582

為了更好地推導,我們需要加入三個軸對齊的單位向量i,j,k。

i,j,k滿足以下特點:

i=jxk;j=kxi;k=ixj;

kxj=–i;ixk=–j;jxi=–k;

ixi=jxj=kxk=0;(0是指0向量)

由此可知,i,j,k是三個相互垂直的向量。它們剛好可以構成乙個座標系。

這三個向量的特例就是i=(1,0,0)j=(0,1,0)k=(0,0,1)。

對於處於i,j,k構成的座標系中的向量u,v我們可以如下表示:

u=xui+yuj+zuk;

v=xvi+yvj+zvk;

uxv=(xui+yuj+zuk)x(xvi+yvj+zvk)

=xuxv(ixi)+xuyv(ixj)+xuzv(ixk)+yuxv(jxi)+yuyv(jxj)+yuzv(jxk)+zuxv(kxi)+zuyv(kxj)+zuzv(kxk)

1.旋轉角度

已知旋轉前向量為p, 旋轉後變為q。由點積定義可知:

可推出p,q之間的夾角為:

2. 旋轉軸

由1中可知,旋轉角所在的平面為有p和q所構成的平面,那麼旋轉軸必垂直該平面。

假定旋轉前向量為a(a1, a2, a3), 旋轉後向量為b(b1, b2, b3)。由叉乘定義得:

可得旋轉軸c(c1, c2, c3)為:

已知單位向量c.normalize , 將它旋轉θ角。由羅德里格旋轉公式,可知對應的旋轉矩陣r :

其中i是3x3的單位矩陣

根據旋轉前後的兩向量值求旋轉矩陣 python

參考 兩個向量間任意旋轉都可以用乙個旋轉軸和乙個旋角來表示,於是我們可以用乙個向量來表示任意旋轉。理解 兩個向量pq叉乘得到乙個垂直於兩向量的向量n,於是,繞著n旋轉乙個標量角 即可讓向量p變到向量q。那麼n和 就可以描述任意兩向量的旋轉,將它們組成向量 n,即為旋轉向量。除了旋轉向量可以表示旋轉之...

根據旋轉前後的向量求旋轉矩陣

在cloundcompare開源裡有矩陣的對應介面,親測可用,非常準確,把 貼下面供開發者使用。其中的dot函式是三維向量的點積函式 附內部實現inline type dot const vector3tpl v const static ccglmatrixtplfromtorotation co...

sklearn計算兩個向量之間的距離

from sklearn.feature extraction.text import countvectorizer from sklearn.metrics.pairwise import euclidean distances from sklearn.feature extraction.t...