Я не математик, но я так или иначе вошел в разработку игр как в хобби.
Никогда изучив что-либо вне основной математики, я испытываю много затруднений, выясняющих, как инвертировать угол чего-то, столкнувшись к противоположному направлению, вдоль оси X и через ось Y.
В одном изображении говорятся больше чем 1 000 слов хотя (специально необразованные слова): http://img156.imageshack.us/i/wihwin.png/
Я в основном хочу инвертировать направление объектов орудия, придерживавшихся к роботу. Когда робот изменяется от направления с правом на оставленное направление, я делаю (180 - angle)
поскольку все предложили меня, но это буквально инвертирует угол, составляя цель орудий, когда они нацеливаются вниз. Так, я должен сделать что-то еще, но это выходит из моего знания.
Для помещения его, другими словами, я работаю в 2D, таким образом, я хочу угол, который стоит перед правом стоять оставленный. Мои углы определяются:
Я хочу что-то, что имеет целью с углом 91 превращаться 89 при инвертировании. Нет никакой существующей оси Z. Кто-либо был бы так добр для помощи мне с этим?
На этот вопрос довольно сложно ответить, не зная немного больше о том, как пушки определены в вашей игре, но я попытаюсь дать несколько советов.
Похоже, что на вашу пушку смотрят сбоку, и вы хотите, чтобы она поворачивалась справа налево, но при этом пушка была направлена вверх. Расчет зависит от того, в каком направлении находится 0, и от того, идут ли углы по часовой стрелке или против часовой стрелки.
Если при угле 0 пушка направлена прямо вверх, то угол измеряется от прямой вверх, по часовой стрелке. Следовательно, обратный угол будет -угол. Если отрицательные углы не работают, используйте (360-угол).
Если при угле 0 пушка направлена вправо, а при угле 45 - вправо вниз, то углы наклона пушки вверх составляют от 180 до 360, причем 270 - прямо вверх. Поэтому, чтобы изменить угол на противоположный, нужно использовать (540-угол).
Если при угле 0 пушка направлена вправо, а угол 45 направлен вправо вверх, то углы пушек от 0 до 180. Чтобы изменить угол на противоположный, используйте (180-angle).
Надеюсь, это поможет! Ли.
В ответ на вашу правку то, что вы хотите, это
-( x - 90 ) + 90
т.е.
180 - x
Конечно, вы, вероятно, будете работать в радианах, а не в градусах, если вы используете стандартные тригонометрические функции C, так что на самом деле это будет
M_PI - x
В основном это разбивается на три шага
Edit: Just noticed this is the same as @Paul R but you didn't seem to think that was correct?
. Глядя на вашу диаграмму, вы отметили те же углы - вы просто изменили для них начальную точку. Если вы на самом деле намеревались измерить угол так, чтобы 0 градусов было прямо вверх, тогда это 360 - x
Таким образом, если вы нацелились на 45 градусов, когда вы повернули назад, это будет 360-45 = 315 градусов
Куда указывает нулевой угол, и куда указывает угол 90 градусов?
Если нулевой угол направлен прямо вверх, то вы можете просто сделать -1 * угол
.
Это зависит от того, как вы определяете угол. Если вы определите его относительно оси X, тогда угол действительно будет просто (180 - альфа).