【问题标题】:Moving a point along a vector沿向量移动一个点
【发布时间】: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 度)时,它会直线向上移动。
  • 角度为 270->360 时完全不动

航向、速度、X 和 Y 都是双倍的,并且航向是通过用户触摸下角的方向键来报告的。我知道方向是正确的,因为头像旋转到正确的方向,这只是我遇到问题的实际运动。

感谢您的帮助
- 克里斯

【问题讨论】:

  • 对我来说很合适。你确定 self.speed 和 self.heading 是正确的吗? (而且它们都是原始双精度数,而不是 NSNumbers?)
  • 三角函数看起来是正确的,所以问题可能出在代码的其他地方。

标签: iphone objective-c vector angle cgpoint


【解决方案1】:

直接向上移动将是sin(90),而不是sin(45)。所以你有一些问题。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多