Android中cos和sin的问题

时间:2012-03-26 23:16:31

标签: java sin cos

我的Android代码存在问题。我用它来移动一个球。如果学位是90,它应该向右移动,如果学位是180,它应该向下移动等。

这是我所做的代码。

int degrees=180;
int bollspeed=4;

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

问题是,当球移动90度时它会移动180度,当它移动180度时移动270.我已经测试了所有我能想到的...任何人都可以在我的代码中看到任何错误或有一个扩展,我会很高兴。 感谢

3 个答案:

答案 0 :(得分:8)

Math.toRadians(degrees-90)怎么样?使用极坐标时,0度应该是3点钟,而不是12点。

答案 1 :(得分:4)

为什么不减去90度?

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

答案 2 :(得分:3)

90度相当于π/ 2。 π/ 2的余弦= 0.因此X中的球速度不应改变。

π/ 2的正弦= 1,因此Y中的球速应增加1。

学位|弧度|值


cos(0°)= cos(0)= 1

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

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

cos(270°)=成本(3π/ 2)= 0


sin(0°)= sin(0)= 0

sin(90°)= sin(π/ 2)= 1

sin(180°)= sin(π)= 0

sin(270°)= sin(3π/ 2)= -1