2014-09-26 54 views
-1

我打破我的頭試圖找到一個合適的公式來計算什麼聲音是一件容易的事,但在實踐中是一個很大的數學頭疼。角座標

我想找出它需要把我的矢量的角度(X,Y,角度)面對座標(X,Y)

enter image description here偏移

我的矢量不會總是面對360度,所以我需要作爲一個變量以及.. 希望在我打破我的電腦屏幕之前的答案。 謝謝。

+1

這個問題似乎是題外話,因爲它是關於數學。 – geoffspear 2014-10-02 18:00:31

回答

2

輸入

  • p1 = (x1,y1)點1(矢量原點)
  • p2 = (x2,y2) POINT2
  • a1 = 360 deg矢量的方向
  • 假設你coodinate系統是:X +是正確的Y +是向上昂+是CCW
  • 你的圖像表明你有X,Y混合起來(角度通常從X軸開始不是Y)
  • A1的
  • da=?變化,以配合方向的p2-p1

解決方案1:

  • da=a1-a2=a1-atanxy(x2-x1,y1-y1)
  • atanxy(DX,DY)也呼籲一些庫ATAN2只是確保操作數的順序是正確的
  • 你也可以用我的atanxy in C++
  • 是4個象限arctangens

溶液2:

  • v1=(cos(a1),sin(a1))
  • v2=(x2-x1,y2-y1)
  • da=acos(dot(v1,v2)/(|v1|*|v2|))

或相同的稍微不同的

  • v1=(cos(a1),sin(a1))
  • v2=(x2-x1,y2-y1)
  • v2/=|v2| //使得V2單位矢量,V1是已經單元
  • da=acos(dot(v1,v2))

這樣:

da=acos((cos(a1)*(x2-x1)+sin(a1)*(y2-y1)/sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))); 

[註釋]

  • 只是改變它馬TCH您的座標系(你沒有指定)
  • 使用弧度或度根據您的正弦,餘弦,反正切的依賴...
0

向量之間的差也向量。

然後計算tangens(Y部分/ X部分),並將其反轉爲一個角度。

當然使用y的正負號,如果x = 0的

0

如果要面對的座標爲(X2,Y2)

移動deltaY = Y2 - Y1

DELTAX = X2 - X1

你必須在使用此公式的兩個點之間度的角度...

angleInDegrees =反正切(移動deltaY/DELTAX)* 180/PI

減去你的矢量的原始角度,你將得到正確的偏移量!

+0

這在所有4個象限中都不起作用 – Spektre 2014-09-26 09:48:58