2016-05-17 284 views
0

我想找出兩個平面之間的二面角我有所有的座標和我計算的向量,但最後一步是給問題,我的最後一步是找到向量之間的角度。這裏是我的代碼通過在Python中使用簡單的numpy或數學計算兩個向量之間的角度?

V1= (x2-x1,y2-y1,z2-z1) 
V2= (x3-x2,y3-y2,z3-z2) 
V3= (x4-x3,y4-y3,z4-z3) 

V4= numpy.cross(V1,V2) 
V5= numpy.cross(V2,V3) 

dihedral=math.acos(V4.V5) 
print dihedral 

請告訴我,如果這是正確的? 我知道4個點的座標,從中我製作了3個向量V1,V2,V3,然後確實跨產品獲得2個向量,現在我想要找到這些向量之間的角度。

+2

可能的重複[Python中兩個n維向量之間的角度](http://stackoverflow.com/questions/2827393/angles-between-two-n-dimensional-vectors-in-python) – Natecat

+0

什麼是你的4分代表? – Eric

+0

您是否使用已知值對其進行了測試?顯示一個有效的數字(或不起作用)的例子。 – hpaulj

回答

2

使用矢量的交叉乘積來計算角度只有在矢量具有單位長度時纔有效。您應首先對它們進行歸一化處理

V4 = V4/np.sqrt(np.dot(V4,V4)) 

而且,我覺得你的意思是寫math.acos(np.dot(V4,V5))math.acos(V4.V5)

相關問題