我的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.我已经测试了所有我能想到的...任何人都可以在我的代码中看到任何错误或有一个扩展,我会很高兴。 感谢
答案 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