给定角度(以度为单位),如何使用x和y找到行程的逻辑? (数学困境)

时间:2011-02-15 16:55:30

标签: math html5 canvas

我在HTML5画布上制作一个简单的游戏,它涉及驾驶一辆小汽车。

向上箭头移动汽车,左右箭头指示它。

我有旋转排序,但是现在它需要在按住向上键时根据它所处的角度移动其x和y位置。

示例:

角度为0,向上箭头仅影响y坐标。

角度为45,向上箭头将以相同的速度影响x和y坐标。

如果角度是32,

,我可以使用什么逻辑?

2 个答案:

答案 0 :(得分:11)

你可以试试这样的事情

   velY = Math.cos(angle * Math.PI / 180) * thrust;
   velX = Math.sin(angle * Math.PI / 180) * thrust;

    x += velX;
    y -= velY;

快速举例说明,每个循环只增加角度。

http://jsfiddle.net/j5U5h/5/

角度0与初始问题中的情况相同。

这是修改过的jsfiddle所以角度0会让你向右移动。

http://jsfiddle.net/j5U5h/7/

 velX = Math.cos(angle * Math.PI / 180) * thrust;
 velY = Math.sin(angle * Math.PI / 180) * thrust;

 x += velX;
 y += velY;

要使0向右移动,只需更改为此,

velX = -Math.cos(angle * Math.PI / 180) * thrust;

答案 1 :(得分:1)

你真的是说90个同轴移动两个轴吗?在我看来,两个轴应该是45次移动。

如果45将两个轴平均移动:

xfactor = angle * (1/90)
yfactor = (90 - angle) * (1/90)

xpos = xpos + (xincrement * xfactor)
ypos = ypos + (yincrement * yfactor)

如果90平均移动两个轴:

xfactor = (2 * angle) * (1/180)
yfactor = (180 - (2 * angle)) * (1/180)

xpos = xpos + (xincrement * xfactor)
ypos = ypos + (yincrement * yfactor)