Форум программистов, компьютерный форум, киберфорум
Наши страницы
OpenGL
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/23: Рейтинг темы: голосов - 23, средняя оценка - 4.83
sphere
1 / 1 / 0
Регистрация: 12.05.2010
Сообщений: 25
1

Загадочный поворот вокруг оси x в OpenGL

07.06.2010, 14:17. Просмотров 4343. Ответов 3
Метки нет (Все метки)

Доброго времени суток всем. Мучаюсь над одной проблемой, а именно: поворот вокруг оси x с помощью glRotatef(xRotate, 1.0, 0.0, 0.0)

На сцене изображена фигура и три декартовы координаты
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// оси X
glBegin(GL_LINES);
   glColor4f(0.50f, 0.00f, 0.00f, 1.0f);
   glVertex3f( 1,  0,  0);
   glVertex3f(-1,  0,  0);
glEnd();
 
// ось Y
glBegin(GL_LINES);
   glColor4f(0.50f, 0.50f, 0.50f, 1.0f);
   glVertex3f( 0,  1,  0);
   glVertex3f( 0, -1,  0);
glEnd(); 
 
// ось Z
glBegin(GL_LINES);
   glColor4f(0.50f, 0.00f, 0.00f, 1.0f);
   glVertex3f( 0,  0,  1);
   glVertex3f( 0,  0, -1);
glEnd();
в "перерисовальщике" задаю повороты вокруг осей X, Y, Z
C++ (Qt)
1
2
3
glRotatef(xRotate, 1.0, 0.0, 0.0); 
glRotatef(yRotate, 0.0, 1.0, 0.0); 
glRotatef(zRotate, 0.0, 0.0, 1.0);
повороты связываю с нажатием клавиш
C++ (Qt)
1
2
3
4
5
6
7
8
case Qt::Key_X: xRotate += 1.0;
break;
         
case Qt::Key_Y:  yRotate += 1.0;
break;
         
case Qt::Key_Z:  zRotate += 1.0;
break;
Теперь самое удивительное: при поворотах вокруг Z и Y фигура действительно вращается вокруг Z и Y. Но! При повороте по X поворот на самом деле осуществляется по другой оси (назову ее P), эта другая ось P как бы жестко закреплена не за фигурой, а за экраном. Если я не осуществляю поворотов вокруг Z и Y, то ось X и P совпадают, но если поворачиваюсь по Y и Z, то X и P соответственно не совпадают, так как X поворачивается вместе с фигурой. Когда изменяю значение xRotate, то поворот происходит по P (а должен по X!).

Помогите плизз разобраться с эти парадоксом, голову сломал на этом деле, так и не понял, почему поворот осуществляется не по X.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2010, 14:17
Ответы с готовыми решениями:

Поворот объекта вокруг оси
Здравствуйте. Знаю что подобная тема уже поднималась на форуме, но интересующий меня ответ я не...

Поворот вокруг произвольной оси в пространстве
Готовлюсь к экзамену, говорят препод ловит на всяких двусмысленностях и неправильных формулировках,...

Поворот вокруг своей оси (blender)
Глупый вопрос, но всёравно задаю его. Как повернуть объект вокруг своей оси? (либо я чтото не...

Не удается реализовать поворот елки вокруг своей оси по x и по у
У меня такая проблема, в OpenGL я почти ничего не понимаю, но ёлку реализовать получилось(не с...

Вращать сферу вокруг центра координат, и одновременно вращать ее вокруг своей оси
Всем привет! Долблюсь о стену второй день ( Суть в том, что мне необходимо вращать сферу вокруг...

3
DenQ
Комбинатор
978 / 247 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
07.06.2010, 17:43 2
Думаю, будет очень полезно

ЗЫ. Советую обратить внимание на функцию обработки клавиш.
0
sphere
1 / 1 / 0
Регистрация: 12.05.2010
Сообщений: 25
08.06.2010, 18:13  [ТС] 3
Цитата Сообщение от DenQ Посмотреть сообщение
Думаю, будет очень полезно

ЗЫ. Советую обратить внимание на функцию обработки клавиш.
Спасибо за ответ. Правильно было назвать тему "Загадочные повороты". Все дело оказалось в последовательности поворотов.

PS С клавишами все норм было.

Добавлено через 1 минуту
PPS Для OpenGL использую Qt
0
DenQ
Комбинатор
978 / 247 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
08.06.2010, 20:03 4
Цитата Сообщение от sphere Посмотреть сообщение
Спасибо за ответ.
Всегда пожалуйста

Цитата Сообщение от sphere Посмотреть сообщение
PS С клавишами все норм было.
Я просто хотел, что б вы обратили внимание на механизм вращения.

ЗЫ. А в сторону Qt я и сам посматриваю.
0
08.06.2010, 20:03
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2010, 20:03

Поворот колеса вокруг центра
Привет Решил побаловаться с OpenGL и написать простенький просмотрщик .obj моделей. Использую c# и...

Вращение примитива вокруг оси z
Здравствуйте! Необходимо повернуть квадрат вокруг оси z на заданный угол, по нажатию кнопки. (язык...

Вращение объекта вокруг своей оси
Задаю вопрос впервые, так что попрошу не придираться к возможным ошибкам/недостатку инфы. Начал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.