Centro Universitário da FEI Curso de Ciência da Computação Computação Gráfica Teórica Prof. Paulo Sérgio Rodrigues www.fei.edu.br/~psergio Computação Gráfica Teórica Introdução à Computação Gráfica: Transformações Geométricas Computação Gráfica Teórica Computação Gráfica Teórica Computação Gráfica Teórica Computação Gráfica Teórica Computação Gráfica Teórica Computação Gráfica Teórica Transformações em Pontos e Objetos • A habilidade de representar um objeto em várias posições no espaço é fundamental para a compreensão da sua forma. • A possibilidade de submeter o objeto a diversas transformações é importante em diversas aplicações de CG. Computação Gráfica Teórica Transformações em Pontos e Objetos • Transformações ou operações corpos físicos a serem estudadas: – – – de Translação Rotação Escala • são o “coração” de muitas Aplicações em Computação Gráfica. Computação Gráfica Teórica Princípios das transformações 2D • Dois aspectos importantes: Uma transformação é uma Entidade Matemática Única e portanto pode ser Denotada, ou identificada, por um nome, ou símbolo, também único. 2. Duas transformações podem ser Combinadas, ou Concatenadas, produzindo uma única transformação que tem o mesmo efeito que a aplicação seqüencial das duas transformações originais. 1. Computação Gráfica Teórica Conceitos Básicos de Matrizes • As imagens na Computação Gráfica são geradas a partir de uma série de Segmentos de Linha que, por sua vez, são representados pelas Coordenadas de seus Pontos extremos. • Multiplicação Matricial (o que nos interessa). Computação Gráfica Teórica Conceitos Básicos de Matrizes • Envolve produtos simples e a soma de elementos das matrizes. A (1,3) .B (3,2) = C (1,2) 17 5 29 (2 35 ) 4 5 3 6 Computação Gráfica Teórica Conceitos Básicos de Matrizes • Diferentemente da Multiplicação de Números a Multiplicação de Matrizes não é Comutativa A (1,3) . B (3,2) # B (3,2) . A (1,3) • A Multiplicação de Matrizes é Associativa. A. (B.C) = (A.B). C Computação Gráfica Teórica Conceitos Básicos de Matrizes • Existe um grupo de Matrizes que Multiplicada por outra Matriz Propriedade de Reproduzir essa Matriz. Este tipo de Matriz recebe de Identidade. I.A=A quando tem a mesma o nome Computação Gráfica Teórica Transformação de Translação • Significa movimentar o objeto de lugar – Aplicada sobre cada vértice – Altera o objeto como um todo – A topologia não é modificada • Translação desloca cada ponto para a nova posição usando a Adição de Valores. Computação Gráfica Teórica Transformação de Translação • Ou seja: – Dx unidades, deslocadas paralelamente ao Eixo X – Dy unidades, deslocadas paralelamente ao Eixo Y • Podendo ser descrito como (2D): xp’= xp + dx yp’= yp + dy Computação Gráfica Teórica Transformação de Translação • Ou ainda de forma matricial (2D): Computação Gráfica Teórica Transformação de Translação • Exemplo (2D): Computação Gráfica Teórica Transformação de Escala • Significa mudar as dimensões de escala – Aplicada sobre cada vértice – Altera o objeto como um todo – A topologia não é modificada • Para fazer com que uma imagem mude de tamanho teremos que multiplicar os valores de suas coordenadas por um fator de escala Computação Gráfica Teórica Transformação de Escala • Ou seja: – S representa o fator de escala no eixo X – Sy representa o fator de escala no eixo Y • Podendo ser descrito como: xp’= xp * sx yp’= yp * sy Computação Gráfica Teórica Transformação de Escala • De forma matricial: Computação Gráfica Teórica Transformação de Escala • Exemplo: Rotação (2D) P’(x’,y’) y r P(x,y) x = r.cos() y = r.sin() r x x’ = r.cos(+) = r.cos().cos() - r.sin() .sin() y’ = r.sin(+) = r.cos().sin() + r.sin() .cos() x’ = x.cos() - y .sin() y’ = x.sin() + y .cos() Rotação (2D) P´= R()*P ) sin( ) x cos( ysin( ) cos( ) 0 1 0 0 x 0*y 1 1 )y*sin( ) xx*cos( )y*cos( ) yx*sin( y y x x y Rotação ao redor do Centro de massa (cmx,cmy) y P´= T(-cmx, -cmy)*P 2 x 1 2 P´´= R()*P´ x y y x P´´´= T(cmx, cmy)*P´´ x Composições de Transformações Rígidas 2D Dois exemplos: Escala ao redor do centro de massa do objeto P´= T(cmx, cmy)* E(Ex, Ey)* T(-cmx, -cmy)*P Uma única matriz 3x3 que resulta em duas translações e uma escala Rotação ao redor do centro de massa do objeto P´= T(cmx, cmy)* R()* T(-cmx, -cmy)*P Transformadas Geométricas 3D (Translação) Translação: P´= T(x, y, y)*P x 100 x x x x x 010 y y y * y y y z 001 z z z z z 1 000 1 1 Escala 3D Escala: P´= E(Ex, Ey, Ez) * P x Ex 0 00 x x x * Ex y 0 Ey 00 y * y y * Ey z 0 0 Ez 0 z z z * Ez 1 0 0 01 1 Escala ao redor do centro de massa do objeto P´= T(cmx, cmy, cmz)*E(Ex, Ey,Ez)*T(-cmx, -cmy, -cmz)*P Rotação (eixo z fixo) P´= Rz()*P (sentido de x para y) ) sin() 0 x cos( y sin ) 0 () cos( z 0 0 1 0 0 1 0 )ysin () x xcos( y xsin () ycos( ) z z 0 x y 0 * 0 z 1 1 Observador y z Rotação ao redor do centro de massa do objeto P´= T(cmx, cmy, cmz)* Rz()*T(-cmx, -cmy, -cmz)*P x Rotação (eixo x fixo) P´= Rx()*P (sentido de y para z) 0 0 x 1 y 0 cos( ) sin() z 0 sin() cos( ) 0 0 1 0 x x y ycos( )zsin () z ysin ()zcos( ) 0 x y 0 * 0 z 1 1 y Observador x z Rotação ao redor do centro de massa do objeto P´= T(cmx, cmy, cmz)* Rx()*T(-cmx, -cmy, -cmz)*P Rotação (eixo y fixo) P´= Ry()*P (sentido de z para x) ) 0 sin() x cos( y 0 1 0 z sin() 0 cos( ) 0 0 1 0 ()xcos( ) x zsin y y z zcos( )xsin () 0 x Observador 0 y * y 0 z 1 1 x z Rotação ao redor do centro de massa do objeto P´= T(cmx, cmy, cmz)* Ry()*T(-cmx, -cmy, -cmz)*P Transformação genérica ao redor do centro de massa: P´= T(cmx, cmy, cmz)* Rz()* Ry()* Rx()* T(-cmx, -cmy, -cmz)*P Computação Gráfica Teórica Diretivas OpenGL • Primitivas: – – glTranslatef ( tx, ty, tz ) glRotatef ( ângulo, vx, vy, vz ) • – • (vx, vy, vz) = vetor que define eixo de rotação glScalef ( sx, sy, sz ) Alteram a matriz de transformação denominada de matriz MODELVIEW. corrente