Перемещение точки по вектору - PullRequest
1 голос
/ 22 декабря 2010


У меня есть точка, определяемая 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 - двойные, и пользователь сообщает о курсе в нижнем углу.Я знаю, что заголовок правильный, потому что аватар вращается в правильном направлении, это просто фактическое движение, с которым у меня проблемы.

Спасибо за любую помощь
- Крис

1 Ответ

2 голосов
/ 22 декабря 2010

Движение вверх будет sin(90), а не sin(45).Так что у вас там какая-то проблема.

(sin(90) == 1, которая просто добавит вашу скорость к y и ничего к x, потому что cos(90) == 0).

...