2013-03-14 43 views
0

這裏有趣的觸發問題...得到一個圓周圍的點

我在Android屏幕中間有一個圓圈。我需要根據用戶觸摸屏幕的X,Y座標,從正Y軸獲取角度。

我現在所有的高中幾何都讓我失望。任何幫助,將不勝感激。

謝謝!

+1

我認爲atan2(y,x)函數可能有些幫助:) – Jelly 2013-03-14 23:15:36

+0

atan2在第一象限中給出了正確的答案。如何解決這個問題? 「if」陳述是這裏唯一的答案嗎? – 2013-03-14 23:17:25

回答

1

如果觸摸點X1,Y1和

xc = display.getWidth()/2; 

yc = display.getHeight()/2; 

x1, y1 in top left. x2, yc in center. angle b and angle a

然後ATAN2(Y1 - YC,X1 - XC)會給你和弧度的答案對應於角「一個「在圖中。

當您引用它時,「正Y軸」對應於90度或π/ 2弧度的角度。如果你真正想要的是「從正Y軸的角度」,那麼你需要從你的角度減去π/ 2,並使用下面的等式取絕對值(只是得到Y軸和你之間的原始角度差):

angleInRadiansAwayFromYAxis = Math.abs(Math.atan2(y1 - yc, x1 - xc) - Math.PI/2); 

如果你想角和b之間的絕對角度差(所以,假裝水平Y軸是0角),你只需要減去角度:

angleInRadiansFromYAxis = Math.atan2(y1 - yc, x1 - xc) - Math.PI/2; 

,如果負數會打擾你,你總是可以在Math.PI * 2中得到任何負數的結果,得到0到pi * 2之間的正數。

+0

如果你想從中得到其他的東西 - 也許你可以用不同的方式描述它,而且我確定有一個合適的等式。 – HalR 2013-03-15 02:03:03

相關問題