Computao Grfica Aula 6 Transformaes lineares sobre as
Computação Gráfica Aula #6: Transformações lineares sobre as entidades geométricas: Rotação, Translação e Escalado. ISUTIC - 2016 Eng. Alexander Rodríguez Bonet
Computação Gráfica Aula de hoje 1. Álgebra de matrizes. 2. Transformações. 3. Combinação de transformações.
Computação Gráfica Objectivo Caracterizar as transformações lineares sobre entidades geométricas.
Computação Gráfica Introdução
Computação Gráfica Álgebra de matrizes
Computação Gráfica Álgebra de matrizes Igualdade de matrizes. Matriz transposta. Classificação de matrizes: • Nula. • Quadrada. • Simétrica. • Diagonal. • Identidade.
Computação Gráfica Álgebra de matrizes Soma de matrizes: Devem ser da mesma ordem. Comutativa. Associativa.
Computação Gráfica Álgebra de matrizes Multiplicação por um escalar:
Computação Gráfica Álgebra de matrizes Produto de matrizes: • Não é comutativa.
Computação Gráfica
Computação Gráfica Álgebra de matrizes Só para matrizes quadradas: • Determinante. • Matriz inversa.
Computação Gráfica Transformações Denomina-se transformações aos processos mediante os quais se levam a cabo as modificações às estruturas das entidades, ou a forma em que se visualizam.
Computação Gráfica Transformações lineares Nas transformações lineares as coordenadas resultantes são uma combinação linear das coordenadas originais, pelo que podem se expressar em anotação matricial como x´=Ax, sendo A a matriz de transformação e x as coordenadas originais. Translação, rotação e escalado.
Computação Gráfica Translação A translação consiste em deslocar um objeto certa magnitude e direção a partir de sua posição original. Para deslocar um objeto, faze-lhe a transformação à cada um dos vértices que o conformam. • X’ = x + Δx • Y’ = y + Δy • Z’ = z + Δz
Computação Gráfica Translação Em Open. GL este processo pode ser transparente ao utente mediante o uso das funções: gl. Translated( GLdoublevar_x, GLdoublevar_y, GLdoublevar_z) gl. Translatef( GLfloatvar_x, GLfloatvar_y, GLfloatvar_z )
Computação Gráfica Escalado Modificam-se as dimensões do objeto, tornando-o maior ou menor em relação a este. Existem 3 fatores de escala, um pela cada eixo. A transformação de um ponto P (x, y, z) a um ponto P´(x´, y´, z´) daria a seguinte relação: • X´= Sx * x • Y´= Sy * y • Z´= Sz * z Ampliação: S > 1. Redução: 0 < S < 1.
Computação Gráfica Escalado Em Open. GL este processo pode ser transparente ao utente mediante o uso das funções: gl. Scaled( GLdoublevar_x, GLdoublevar_y, GLdoublevar_z) gl. Scalef( GLfloatvar_x, GLfloatvar_y, GLfloatvar_z )
Computação Gráfica Rotação As rotações em três dimensões requerem de um ângulo de rotação e um eixo com respeito ao qual se quer rodar. É o resultado de uma multiplicação.
Computação Gráfica Rotação Rot(X) Rot(Y) Rot(Z)
Computação Gráfica Rotação gl. Rotated(GLfloat Angle, GLdoublevar_x, GLdouble y, GLdouble z) gl. Rotatef(GLfloat Angle, GLfloat x, GLfloat y, GLfloat z ) Tarefa: Pesquisar como fica a matriz se deseja-se realizar uma rotação à figura com respeito a um eixo diferente dos eixos de coordenadas.
Computação Gráfica Combinação de transformações Posição inicial
Computação Gráfica Combinação de transformações gl. Rotatef(30, 0, 0, 1);
Computação Gráfica Combinação de transformações gl. Translatef (0. 0, 0. 3, 0. 0);
Computação Gráfica Combinação de transformações Por exemplo, têm-se duas transformações A e B e x um vetor a transformar. Quer-se aplicar B primeiro e por último A, Para isto se procede da seguinte maneira: • Bx = a • Aa = b • ABx = b • Cx = b onde C=AB • Em C (uma sozinha matriz) têm-se as duas transformações A e B.
Computação Gráfica Combinação de transformações Tarefa: No exemplo anterior realizou-se uma rotação e depois uma translação. Pesquise se obtém-se o mesmo resultado se realiza-se primeiro a translação e depois a rotação. Explique por que?
Computação Gráfica Combinação de transformações Open. GL oferece uma pilha para o manejo da matriz de modelagem com capacidade para 32 matrizes. A ideia é que se podem alojar estados da matriz que sejam convenientes recordar. Para isso provê as seguintes funções: • gl. Push. Matrix() //guarda na pilha o estado da matriz • gl. Pop. Matrix() //remove da pilha a matriz que está no topo
Computação Gráfica Open. GL Estabelece um modo para as matrizes de modelagem que são as que definem as transformações lineares. Ao início, como não se efectuou nenhuma transformação, esta matriz deve ser igual à matriz identidade. gl. Matrix. Mode(GL_MODELVIEW); gl. Load. Identity();
Computação Gráfica Conclusões: • As transformações lineares realizam sua modificação nas coordenadas dos vértices das entidades. • Ao transformar uma figura sempre se conservam as características da figura original. • As transformações lineares representam-se como uma transformação matricial. • As matrizes que se utilizam são de 4 x 4.
Computação Gráfica Tarefa Escrever numa folha as respostas das tarefas da aula da quarta-feira e as orientadas hoje. Procurar ademais a matriz de transformações para realizar uma rotação de 60 graus a um corpo com respeito ao eixo y, e depois aumentar seu tamanho ao duplo em todas as dimensões. Entregar a folha ao professor na próxima aula.
Computação Gráfica Aula #6: Transformações lineares sobre as entidades geométricas: Rotação, Translação e Escalado. ISUTIC - 2016 Eng. Alexander Rodríguez Bonet
- Slides: 30