Как отменить (или отменить) преобразование OpenGL SRT с другим преобразованием? - PullRequest
0 голосов
/ 28 ноября 2011

Я готовлюсь к экзамену, и на предыдущем экзамене был такой вопрос:

1. void drawGLScene(){ 
2. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

3. glLoadIdentity(); 
4. glTranslatef(0, 1, 0); 
5. glRotatef(-90.0f, 0.0f, 0.0f, 1.0f); 
6. glScalef(.5, 2, 1); 
7. drawChevron();  
8. glFlush(); 
9. }

"Напишите три строки OpenGL, которые при вставке между строками 6 и 7 полностью изменят (отменит) эффектпреобразований, реализованных в строках с 4 по 6. Не используйте glLoadIdentity (). "

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

Кто-нибудь сможет мне объяснить, как правильно это сделать?

1 Ответ

3 голосов
/ 28 ноября 2011

Три строки будут иметь вид:

glScalef(1.0/.5, 1.0/2, 1.0/1);
glRotatef(90.0f, 0.0f, 0.0f, 1.0f);
glTranslatef(0, -1, 0);

По сути, вам нужно выполнять обратные преобразования в обратном порядке.Вы начинаете с масштабирования.Обратным для масштабирования будет уменьшение, но на этот раз с коэффициентом 1 /.Затем вы поворачиваете его назад на 90 градусов и переводите обратно на 1 единицу по оси y.

...