沿着一个向量移动一个点

问题描述:


我有一个由x,y和由标题,速度定义的向量定义的点。我试图沿着这个向量移动点x,y,距离'速度'。下面是我目前使用的代码:沿着一个向量移动一个点

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

标题可以是一个完整的圆的任何角度 - 0至2π(0-360度)。问题是上述代码:

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

航向,速度,X和Y都是双和航向通过用户触摸在一个方向垫报下角。我知道标题是正确的,因为化身旋转到正确的方向,这只是我遇到问题的实际运动。

感谢所有帮助
克里斯 -

+0

看起来很对我。你确定self.speed和self.heading是正确的吗? (他们都是原始的双打,而不是NSNumbers?) – 2010-12-22 01:49:40

移动直线上升会sin(90),不sin(45)。所以你在那里有一些问题。

(​​这将只是继续增加你的速度y和没有x因为cos(90) == 0)。