2012-03-26 99 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