Я хочу знать способ перевернуть угол по горизонтальной оси, не выполняя много операций. Скажем, у меня есть угол 0 («указывая вправо» в системе координат моего кода), угол поворота должен быть 180 (указывая влево). Если 90 (направленный вверх), перевернутый, все равно должен быть 90. 89 - 91 и т. Д. Я могу работать со скоростями X/Y, подразумеваемыми углом, но это замедлит работу, и я чувствую, что это не правильный путь. Я не знаю много математики, поэтому я мог бы называть вещи неправильным именем ... Может ли кто-нибудь помочь?Отражающий угол по горизонтали
EDIT: К сожалению, я взял длинный, я должен был быть из компьютера на долгое время, OK ... http://img215.imageshack.us/img215/8095/screenshot031v.jpg
Этот снимок экрана может do.The выше структуры являются два спутника и луч связан с белым точка в центре. Два спутника должны унаследовать угол белой точки (это видно для целей отладки), поэтому, если он нацелен под углом, они последуют за ним. Спутник слева зеркальный, поэтому я рассчитал его с углом 180 градусов, как было предложено, хотя это была моя первая попытка. Как вы можете видеть, это не отражается, а переворачивается. И когда белая точка вращается, она вращается назад. Другой делает хорошо.
Это перерасчет угла для чего-то связанного с чем-то другим, pid будет родителем, а id - текущим. pin.ang угол смещения копируется, когда объект связан с другим, так что она сохраняет позицию при повороте:
if(object[id].mirror) object[id].angle = 180 - (object[id].pin.ang + object[pid].angle); else object[id].angle = object[id].pin.ang + object[pid].angle;
И это удельное вращение часть. OpenGL. offx/y для вещей, вращающихся вне центра, подобно лучу, который должен появиться там, он делает все остальное правильным.
glTranslatef(list[index[i]].x, list[index[i]].y, 0); glRotatef(list[index[i]].angle, 0.0, 0.0, 1.0); glTranslatef(list[index[i]].offx, -list[index[i]].offy, 0);
вращение также, как пропустить, когда скорость вращения (целое число добавляется каждый перерисовывать к текущему углу, положительный для вращения по часовой стрелке, как в этом следующем: http://img216.imageshack.us/img216/7/screenshot032ulr.jpg
Так что это, безусловно, а не на 180 градусов, несмотря на то, насколько это было бы очевидно. Зеркалирование выполняется путем простое изменение координат текстуры, поэтому оно не влияет на угол. Я боюсь, что это может быть причуда на предмет вращения GL. Опять же, я извините за плохое объяснение, несмотря на то, что двигатель работает нормально (за исключением неприятностей, подобных этому), я не являюсь частью кода г, просто дизайнер ...
Это звучит для меня, как будто вы хотите «перевернуть вокруг вертикальной оси» – pavium
ли вы хотите лечить, указывая вниз, как 270 или -90? Или это никогда не произойдет? – pavium
Ну, я не слишком уверен в том, что делаю, прошу прощения за плохое объяснение. Моя цель - иметь пушки на персонаже, а также те пушки, которые следуют за состоянием персонажа, поэтому они направлены в противоположном направлении в зависимости от их угла. В основном, переключение справа и слева, чтобы пушки могли следовать за зеркальным флагом. Если при повороте я сделаю 180-угол, они будут перевернуты, поэтому пушка, направленная вниз-направо, будет направлена вверх-влево. Я стараюсь, чтобы он указывал вниз-налево. – 2009-09-03 07:28:38