Dyikot
@Dyikot

[OpengGL] Почему вращается ось, а не фигура?

glPushMatrix();
		glRotatef(90, 0, 0, 1);
		glBegin(GL_POLYGON);
		glVertex2f(figureMove.getXPosition(-30), figureMove.getYPosition(45));
		glVertex2f(figureMove.getXPosition(-30), figureMove.getYPosition(50));
		glVertex2f(figureMove.getXPosition(-20), figureMove.getYPosition(50));
		glVertex2f(figureMove.getXPosition(-20), figureMove.getYPosition(45));
		glVertex2f(figureMove.getXPosition(-25), figureMove.getYPosition(45));
		glVertex2f(figureMove.getXPosition(-25), figureMove.getYPosition(40));
		glVertex2f(figureMove.getXPosition(-35), figureMove.getYPosition(40));
		glVertex2f(figureMove.getXPosition(-35), figureMove.getYPosition(45));
		glEnd();
		glPopMatrix();

Без glRotatef
62dfb3878df31906119170.png
С glRotatef
62dfb3bc37702752223077.png
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Потому что вы сначала повернули, а потом стали задавать координаты. Поворот всегда поворачивает все пространство относительно нуля.

Если хотите вращать только фигуру, то сначала через glTranslate перенесите ее центр в ноль, потом вращайте и задавайте координаты вершин (относительно центра!).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Мне вспоминается мульсериал Футурама. Там когда профессора спросили - на каком принципе летает его космическая ракета - он ответил что она на самом деле не летает. Она стоит на месте. Просто она двигает вокруг себя всю вселенную.

Вот в графических библиотеках можно представлять что они вращают мир вокруг камеры. Ну с точки зрения алгебры матриц - это примерно так и просиходит.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы