Как отразить угол через ось Y

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

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

В одном изображении говорятся больше чем 1 000 слов хотя (специально необразованные слова): http://img156.imageshack.us/i/wihwin.png/

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

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

  • 0 являющийся "полностью направо"
  • 180 "оставленных"
  • 90 и
  • 270 "вниз"

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

5
задан Kirk Broadhurst 24 August 2011 в 04:47
поделиться

5 ответов

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

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

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

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

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

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

3
ответ дан 13 December 2019 в 19:21
поделиться

В ответ на вашу правку то, что вы хотите, это

-( x - 90 ) + 90

т.е.

180 - x

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

M_PI - x

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

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

Edit: Just noticed this is the same as @Paul R but you didn't seem to think that was correct?

.
6
ответ дан 13 December 2019 в 19:21
поделиться

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

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

1
ответ дан 13 December 2019 в 19:21
поделиться

Куда указывает нулевой угол, и куда указывает угол 90 градусов?

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

0
ответ дан 13 December 2019 в 19:21
поделиться

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

1
ответ дан 13 December 2019 в 19:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: