2012-03-26 59 views
2

我在Android中的代碼有問題。我用這個來移動球。如果度數是90,它應該向右移動,如果度數是180,它應該向下移動等。Android中的cos和sin的問題

這是我所做的代碼。

int degrees=180; 
int bollspeed=4; 

bollX += bollspeed*Math.cos(Math.toRadians(degrees)); 
bollY += bollspeed*Math.sin(Math.toRadians(degrees)); 

的問題是,當球應該將其移動180移動90度,而當它應該移動180度,它的動作270.我已經測試了所有我能想起來......任何人都可以看到任何錯誤在我的代碼或有一個擴展我會很高興。 謝謝

回答

8

Math.toRadians(degrees-90)怎麼樣?當使用極座標時,0度應該在3點位置,而不是在12點。

+0

好的。我不知道。非常感謝 – 2012-03-26 23:23:42

4

爲什麼不減去90度呢?

bollX += bollspeed*Math.cos(Math.toRadians(degrees-90)); 
bollY += bollspeed*Math.sin(Math.toRadians(degrees-90)); 
3

90度相當於π/ 2。 π/ 2 = 0的餘弦,所以X中的球速不應改變。

π/ 2 = 1的正弦,從而在Y球的速度應1.

度增加| Radians |值


COS(0°)= cos(0)= 1個

COS(90°)= cos(π/ 2)= 0

COS(180°)= COS( π)= -1

COS(270°)=費用(3π/ 2)= 0


罪(0°)= SIN(0)= 0

SIN(90°)= SIN(π/ 2)= 1個

罪(180°)= SIN(π)= 0

罪(270°)= SIN(3π/ 2)= - 1