沿着矢量移动一个点

时间:2010-12-22 01:43:34

标签: iphone objective-c vector angle cgpoint


我有一个由x,y定义的点和由航向,速度定义的矢量。我试图沿着这个向量移动点x,y,距离为“速度”。以下是我目前使用的代码:

self.x += self.speed * cos(self.heading);
self.y += self.speed * sin(self.heading);

标题可以是整圆的任何角度 - 0到2π(0-360度)。问题是上面的代码:

  • 当角度为0-> 270时,仅沿x或y轴移动
    • 例如,当化身面向右上角(相对于45度)时,它会直线向上移动。
  • 当角度为270-> 360
  • 时,根本不移动

航向,速度,X和Y都是双打,并且用户触摸下角的方向盘报告航向。我知道标题是正确的,因为化身旋转到正确的方向,这只是我遇到问题的实际动作。

感谢您的帮助 - 克里斯

1 个答案:

答案 0 :(得分:2)

直线上升将是sin(90),而不是sin(45)。所以你在那里遇到了一些问题。

sin(90) == 1只会继续将你的速度加到y而不是x,因为cos(90) == 0)。