2012-11-20 55 views
2

我正在製作一個簡單的Android平板電腦遊戲,並陷入了一個看似簡單的數學問題。在Android中移動物體的距離和角度有多遠

我有一個觸摸板,可以產生手指從中心觸及的角度。這是基於0度是在3點鐘,工作正常。

Touchpoint

用手指上45度,我想從在該角度的給定點火的對象斷開,知道該項目能夠行駛150個像素的範圍。我的數學兒子告訴我的公式,但我相信它基於0,0座標是左下角,0,0是左上角。

他的數學是這樣的:

xDirection = range(hypotenuse) * Math.cos(angle); 
yDirection = range(hypotenuse) * Math.sin(angle); 

這樣算算但是返回了一些非常不正常的結果。如果我完美0度數學是正確的,它告訴我xDirection是100,這是我的範圍,yDirection是0.如果我在90度,它給了我一個x方向-44和y方向89。

我的xDirection和yDirection表示在我的觸摸板所處的角度下,我的子彈需要在x軸和y軸上移動多少個像素以滿足其範圍。

這可能是其他人的簡單數學,但我迷路了!任何幫助將是超級!

+5

角度應該是弧度,而不是度數。 – njzk2

回答

0

我確定了我的問題!

最重要的是,我不知道這是Y因素必須顛倒。另外,因爲Math.cos和Math.sin正在尋找弧度,所以失敗了,因爲我正在輸入從Math.toDegrees()返回的文字度數值;

所以,改變了數學這之後:

xDirection = range(hypotenuse) * Math.cos(Math.toRadians(angle)); 
yDirection = -range(hypotenuse) * Math.sin(Math.toRadians(angle)); 

一切都出來就好了。再次注意y座標是相反的,因爲一般數學將0,0放在左下角。我們的屏幕座標0,0作爲左上角。