Javascript 更改二维平面上的位置

Javascript 更改二维平面上的位置,javascript,Javascript,我正在用javascript编写一个小游戏。我试着移动一个角色,就像从上面往下看一样。我已经有一段时间没有做过任何基础数学了,我的一些定位无法正常工作。我想以给定的角度移动若干步。输入由程序根据用户按键和我的模型中的事件生成 我有以下代码 var xPos = 0, yPos = 0, angle = 45, distance = 1; var yDelta = Math.sin(angle * Math.PI / 180) * distance, xDelta = Math.sqrt

我正在用javascript编写一个小游戏。我试着移动一个角色,就像从上面往下看一样。我已经有一段时间没有做过任何基础数学了,我的一些定位无法正常工作。我想以给定的角度移动若干步。输入由程序根据用户按键和我的模型中的事件生成

我有以下代码

var xPos = 0, yPos = 0, angle = 45, distance = 1;

var yDelta = Math.sin(angle * Math.PI / 180) * distance,
    xDelta = Math.sqrt(Math.pow(distance, 2) - Math.pow(yDelta, 2));
yPos += yDelta;
xPos += xDelta;
我的测试用例是

  • 在45度时向前走一步,预期(0.7071,0.7071)和is(0.7071,0.7071)
  • 在45度时向后退一步,预计为(-0.7071,-0.7071),但为(0.7071,-0.2928)

我看不出我的移动算法有什么问题。据我所知,数学是正确的。我犯了一个明显的错误吗?或者我可以采取更简单的方法吗?

尝试将
xDelta
计算为

xDelta = Math.cos(angle * Math.PI / 180) * distance;

对于向后,您应该在位置上减去(而不是加上)xDelta和yDelta

你想干什么?你的游戏的目的是什么?@sora我试图移动一个角色,好像从上面往下看你在使用html5画布吗?要将角色移动到什么位置?是否使用用户输入?@sora我想将角色从指定位置以一定角度移动一段距离。我使用它来更新模型,这将反映在UI中。这使得它独立于任何UI技术,如canvas,并且易于进行单元测试。