Как отразить угол по оси Y - PullRequest
5 голосов
/ 15 июня 2010

Я не математик, но я как-то увлекся разработкой игр как хобби.

Никогда не изучая ничего, кроме базовой математики, у меня много проблем с поиском, как изменить угол наклона чего-либо, лицом к лицу.в противоположном направлении, вдоль оси X и поперек оси Y.

Одно изображение говорит более 1000 слов, хотя (специально необразованные слова): http://img156.imageshack.us/i/wihwin.png/

Я в основном хочу обратить вспятьНаправление объектов пушек, привязанных к роботу.Когда робот меняет направление с правой стороны на левую, я делаю (180 - angle), как все предлагали мне, но он буквально меняет угол наклона, заставляя пушки направляться вверх, когда они направляются вниз.Итак, мне нужно сделать что-то еще, но это ускользает от моих знаний.

Другими словами, я работаю в 2D, поэтому я хочу, чтобы угол был направлен направо налево.Мои углы определены:

  • 0 «полностью направо»
  • 180 «влево»
  • 90 «вверх» и
  • 270"вниз"

Я хочу, чтобы цель, которая нацеливается под углом 91, превратилась в 89 при обратном направлении.Там нет оси Z присутствует.Кто-нибудь будет так любезен, чтобы помочь мне с этим?

Ответы [ 5 ]

6 голосов
/ 15 июня 2010

В ответ на ваше редактирование вы хотите получить

-( x - 90 ) + 90

т.е.

180 - x

Конечно, вы, скорее всего, будете работать в радианах, а не в градусах, если вы используете стандартТригонометрические функции C, так что на самом деле это будет

M_PI - x

В основном это разбивается на три шага

  1. (x - 90) регулирует ваш угол так, чтобы нулевая точка находилась на 90 градусов.
  2. Отрицание этого затем переворачивает преобразованный угол.
  3. Снова добавьте 90 для преобразования в исходный диапазон углов.

Редактировать: Только что заметил, что этотак же, как @Paul R, но вы, кажется, не думаете, что это правильно?

3 голосов
/ 15 июня 2010

Сложно ответить, не зная немного больше о том, как определяются пушки в вашей игре, но я постараюсь дать несколько советов.

Звучит так, будто ваша пушка видна сбоку, и вы хотите, чтобы она поворачивалась справа налево, но держать пушку вверх. Расчет зависит от того, в каком направлении находится 0, и от того, идут ли углы по часовой стрелке или против часовой стрелки.

Если угол 0 имеет пушку, направленную прямо вверх, то угол измеряется от прямой вверх, по часовой стрелке. Следовательно, обратный угол будет -угольным. Если отрицательные углы не работают, используйте (угол 360).

Если угол 0 имеет пушку, направленную вправо, и угол 45 точек вправо-вниз, то углы пушек, направленные вверх, составляют от 180 до 360, при этом 270 направлено прямо вверх. Поэтому, чтобы повернуть угол, вы должны использовать (угол 540).

Если угол 0 имеет пушку, указывающую вправо, но угол 45 точек к верхнему правому углу, то угол пушки составляет от 0 до 180. Чтобы изменить угол, используйте (угол 180).

Надеюсь, это поможет! Lee.

1 голос
/ 15 июня 2010

Глядя на диаграмму, отмеченные вами углы одинаковы - вы просто изменили для них начальную точку.Если вы на самом деле намеревались измерить угол так, чтобы 0 градус был прямым, то это 360 - x

Таким образом, если вы нацелились на 45 градусов, при обратном повороте это 360-45 = 315 градусов

1 голос
/ 15 июня 2010

Это зависит от того, как вы определяете свой угол.Если вы определяете его относительно оси X, тогда угол действительно равен (180 - альфа).

0 голосов
/ 15 июня 2010

Где указывается угол в нулевом градусе и куда указывает 90 градусов?

Если ноль прямо вверх, тогда вы можете просто сделать -1 * angle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...