使球移动以指定方向

时间:2016-11-05 14:28:57

标签: java math sin cos

我想让球向某个方向移动,就像我给出数字一样 0 - 360.目前我的惯例是:

0向右移动,向下移动90度,向左移动180度,向上移动270度。

问题在于,如果我放置10,11,12等等,它根本不会移动。有些数字使它以45度角移动。

我目前的代码:

float x = 0, y = 0;
float speed = 1f;

int angle = 90;

float moveX += speed * Math.cos(Math.toRadians(angle));
float moveY += speed * Math.sin(Math.toRadians(angle));

x += moveX;
y += moveY;

moveX = 0;
moveY = 0;

如果我取消toRadians,球会向不同的方向移动,但仍然无效。

我的数学和英语很糟糕所以尽量解释这个简单。我不知道弧度和度数之间的差异。

2 个答案:

答案 0 :(得分:0)

  

我不知道弧度和度数之间的差异等。

这不完全是这个网站,但这里有一个简单的解释。弧度和度数是2个测量单位(如公里和英里)。圆形具有360度或2π弧度。这意味着

1 degree = π/180 (0.0174533) radians
1 radian = 180/π (57.2958) degrees

使用辐射的圆上的4个基本方向将是0或2π,π/ 2,π,3π/ 2对应于0或360,90,280,270度。

  

我想让球向某个方向移动,就像我给0到360之间的数字

现在你的代码。您在行

中有语法错误
float moveX += speed * Math.cos(Math.toRadians(angle));

您刚刚声明moveX,因此您不会使用+=添加=,只需使用moveY进行分配。与x相同。现在,如果您在

之后打印yx += moveX; y += moveY;
$result = $MailChimp->get('/lists/'.$list_id.'/members/');

您将获得正确的结果。我不知道为什么在你将它们设置为0后 - 你将失去球的位置。

答案 1 :(得分:-2)

在循环之前实例化moveX和moveY