如何計算兩個空間向量之間的轉角

2021-03-31 22:36:11 字數 647 閱讀 6150

在三維空間當中,經常涉及到計算兩個向量之間的角度問題,而且這個角度是特定的方向角度

也就是說,圍繞他們的公共法向量旋轉的角度

假定這兩個向量是a和b

我們知道 c=a×b是乙個向量,方向是按照右手座標系生成的,垂直於ab所在平面的向量,c向量的模是|c|=|a|*|b|*sincita

同時,我們知道,向量a*b是乙個數,它的大小是是 |a|*|b|*coscita

根據這兩個表示式,我們似乎可以用  tancita = |a×b|/(a*b)來計算夾角

但是,這個計算是有問題的,因為|c|這個求模運算,永遠返回的是乙個整數,體現不出方向的問題

為了解決這個問題,我們可以把c向量和ab的轉軸也是法向量n進行點乘來解決

假定b是圍繞n這個單位向量旋轉了cita角達到了b

那麼顯然(a×b)*n就是我們需要的c的模了

另外,我們需要知道的是,從a到b的旋轉角度是0到360度範圍的

借助atan2函式,可以完美的計算出這個旋轉角度

cita = atan2( (a×b)*n,  a*b)

這個計算當中,a和b的模長可以是任意的,只要非0即可

無需對他們進行單位化處理,唯一需要單位化的轉軸(法向量)n

附註:這個技術在物體的運動控制,比如飛彈跟蹤的演算法當中會用到

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

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

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

為了更好地推導,我們需要加入三個軸對齊的單位向量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,...

python計算空間中兩個向量的夾角

python計算空間中兩個向量的夾角 python計算兩個三維向量的夾角 def angle2 v1,v2 x np.array v1 y np.array v2 分別計算兩個向量的模 module x np.sqrt x.dot x module y np.sqrt y.dot y 計算兩個向量的...