2011-10-10 65 views
0

我正在嘗試爲我的遊戲應用添加彈射運動。當用戶觸摸圖像視圖時,它會根據imageview的運動計算初始角度。但在logcat中,我看到這些角度值是消極的。任何人都可以解釋爲什麼這樣。我想用r來設置0到90度之間的角度值。負角度值android

在下面找到我的代碼,用於計算角: -

float dy = motion.getY()-mImage.getPivotY(); 
float dx = motion.getX()-mImage.getPivotX(); 

double r = Math.atan2(dy, dx); 

int angle = (int)Math.toDegrees(r); 

其中運動類型MotionEvent的。

+0

這不是與標準數學和屏幕之間的不同座標模型有關嗎? –

回答

1

垂直屏幕座標,例如由motion.getY()mImage.getPivotY()返回的垂直屏幕座標將原點定義爲從上到下正向移動的屏幕頂部。

標準數學約定與此相反。你需要將這個因素考慮進你的等式中。在這種情況下通過使用-dy

通過採取原始的公式的解釋道:

浮動DY = motion.getY() - mImage.getPivotY();

並調整屏幕座標正則座標

浮子DY2 =(Screen.getHeight() - motion.getY()) - (Screen.getHeight() - mImage.getPivotY() );

其中給出:

浮子DY2 = mImage.getPivotY() - motion.getY()

因此:

浮子DY2 = -dy

這就是爲什麼y你看到一個負值。

+0

謝謝!爲您的寶貴解釋! – Ruchira