2012-05-08 42 views
0

可能重複之間的角度:
Finding Signed Angle Between Vectors尋找載體

我需要幫助有一點數學問題來的。

所以,我得到了一個向量v,代表一個方向,以及兩個點s和t。我該做什麼,是找到應用於我的向量v的旋轉,以便使它與由給定的兩個點定義的向量平行。

目前我有點實現這一點,也就是說,我能夠找到角度,而不是應用它的方式(順時針或逆時針)。

目前我只是計算向量的點積計算acos。

歡迎任何輸入。

+1

http://stackoverflow.com/questions/2150050/finding-signed-angle-between-vectors – moowiz2020

+0

作爲moowiz2020說,這是一個確切的重複。 – tom10

+0

哦,謝謝,在搜索時沒有找到它;小號 – Skeen

回答

3

讓我們假設acos給你一個介於0和pi之間的值。

我們還可以說從st的載體被稱爲u。正如你已經計算,

acos((v . u)/(|v| * |u|)) 

給你一個角度alpha。實際上,v可能是ualpha旋轉到一個或另一個方向。

您可能需要2D,但我會先3D。

旋轉應該在與vu都垂直的向量周圍。這個載體當然是兩者的交叉產品:u x v

讓我們看一個例子:

/v 
/
/\ alpha 
/) 
------------ u 

在這種情況下,u x v給對您的顯示器外部的載體。同時,您可以看到alpha的配給量應該是逆時針,使v平行於u

也就是說,在3D,你必須計算w = u x v並始終alpha旋轉v逆時針相對於w。或者,您可以按照-w(即v x u)順時針旋轉valpha

在2D中,我假設你想圍繞z轉動,你不知道哪個方向。可以應用與上述相同的方法,包括:

  • 計算w = u x v
  • 如果w具有正z(x和y是零)
    • 然後,v應逆時針轉動。
    • else,v應該順時針旋轉。