2013-03-25 35 views
0

我現在正在一個項目上工作,我需要製作一個函數來查找子彈的矢量方向。我目前的代碼已關閉,我似乎找不到原因。C++如何找到窗口中的2個點之間的向量?

float AngleX = pMouse->X() - This->DirectionX(); 
float AngleY = pMouse->Y() - This->DirectionY(); 
+2

我不明白如何減去兩個X座標會給你一個角度。什麼是'DirectionX'? – 2013-03-25 17:14:21

+2

'This'?資本化? – raina77ow 2013-03-25 17:14:56

+0

什麼是DirectionX()和DirectionY()?它們是否是(可能歸一化的)速度矢量的組成部分?如果是這樣,請記住你想要的是當前位置,而不是運動方向。 – jerry 2013-03-25 17:17:09

回答

6

從(X,Y)偏移量找到角度最好功能是atan2(dy, dx),其中dydx是在每個方向上的增量組件。

請注意,結果將以弧度表示,並且在某些圖形系統上,軸會向下而不是向上!

atan2的特別好的特性是,它會永遠給你全方位的-π .. π,你不能用一個單一的acosasin操作得到的結果。得到的角度將是給定線相對於正X軸的角度,逆時針方向。

+1

另請注意,僅供參考,一行本身沒有角度。您至少需要兩條觸摸線段。你得到的「角度」是連接兩點的直線和另一條假想線之間的夾角,通常與X軸平行。 – cHao 2013-03-25 17:20:16

+0

@cHao很好的說明! – Alnitak 2013-03-25 17:20:44

+0

很好的評論,但它聽起來像OP正在尋找一個矢量,而不是一個角度。當然,轉換並不難,但你已經隱含地找到了這個向量。問題似乎是OP無法正確計算。 – jerry 2013-03-25 17:23:07

相關問題