Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > порядок применения трансформаций


Автор: nmn 23.11.2010, 21:41
здравствуйте

установки
Код

glMatrixMode(GL_PROJECTION);
            glLoadIdentity();
            gluOrtho2D(0, width, height, 0);


исходная картинка без применения трансформаций

Код

            glLineWidth(5);
            glBegin(GL_LINES);
                glVertex2d(0, 0);glVertex2d(width, height);//главная диагональ
                glVertex2d(0, height);glVertex2d(width, 0);//побочная диагональ
            glEnd();

user posted image


после таких трансформаций (собственно то что нужно)

Код

 glTranslatef((float)width / 2, (float)height / 2, 0);
            glScalef(1, 3, 1);
            glRotatef((float)53.130102354155978703144387440907, 0, 0, 1);
            glTranslatef(-(float)width / 2, -(float)height / 2, 0);

            glLineWidth(5);
            glBegin(GL_LINES);
                glVertex2d(0, 0);
                glVertex2d(width, height);
                glVertex2d(0, height);glVertex2d(width, 0);
            glEnd();

user posted image

и после таких трансформаций
Код

glTranslatef((float)width / 2, (float)height / 2, 0);
            glRotatef((float)53.130102354155978703144387440907, 0, 0, 1);
            glScalef(1, 3, 1);
            glTranslatef(-(float)width / 2, -(float)height / 2, 0);

            glLineWidth(5);
            glBegin(GL_LINES);
                glVertex2d(0, 0);
                glVertex2d(width, height);
                glVertex2d(0, height);glVertex2d(width, 0);
            glEnd();

user posted image

вопрос в каком порядке применяются трансформации?
в первом случае сначала применяется увеличение, а потом поворот?

Автор: VАDIM 25.11.2010, 11:58
В OpenGL происходит изменение системы координат, поетому если есть 2 взова glTranslatef(10, 10, 0); glRotatef(60, 0, 0, 1), то поворот будет осуществляться около точки  (10, 10, 0). Тоесть снача применяется преобразование которое ты напишеш первым, следующее преобразования осуществляються относительно уже сделаных ранее преобразований.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)