【发布时间】:2010-12-22 01:43:33
【问题描述】:
我有一个由 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 度)时,它会直线向上移动。
- 例如,当头像面向右上角(相对 45 度)时,它会直线向上移动。
- 角度为 270->360 时完全不动
航向、速度、X 和 Y 都是双倍的,并且航向是通过用户触摸下角的方向键来报告的。我知道方向是正确的,因为头像旋转到正确的方向,这只是我遇到问题的实际运动。
感谢您的帮助
- 克里斯
【问题讨论】:
-
对我来说很合适。你确定 self.speed 和 self.heading 是正确的吗? (而且它们都是原始双精度数,而不是 NSNumbers?)
-
三角函数看起来是正确的,所以问题可能出在代码的其他地方。
标签: iphone objective-c vector angle cgpoint