Computação Gráfica - Transformações Geométricas no Plano e no Espaço

Embed Size (px)

Citation preview

Computao Grfica

Computao Grfica
Aula 6 Transformaes
Geomtricas no
Plano e no Espao

Prof. Tony Alexander Hild

Documento licenciado por Creative Commons - http://creativecommons.org/licenses/by-nc-sa/2.5/br/

Introduo

Transformaes geomtricas so operaes que podem ser utilizadas visando a alterao de algumas caractersticas como posio, orientao, forma ou tamanho do objeto a ser desenhado.

Todas as transformaes geomtricas podem ser representadas na forma de equaes;

O problema que manipulaes de objetos grficos normalmente envolvem muitas operaes de aritmtica simples;

As matrizes so muito usadas nessas manipulaes porque so mais fceis de usar e entender do que as equaes algbricas, o que explica por que programadores e engenheiros as usam extensivamente.

Matrizes em Computao Grfica

Pontos, Vetores e Matrizes

Dado um sistema de coordenadas, possvel definir pontos e objetos neste sistema pelas suas coordenadas;

Nos espaos bidimensionais ou nos objetos planos, duas coordenadas caracterizam um ponto;

Para objetos tridimensionais ou pontos no espao, trs coordenadas so necessrias para definir seu posicionamento;

Assim, dado um sistema de coordenadas, cada ponto pode ser associado s suas coordenadas no sistema. Por exemplo:

Relembrando - Vetores e matrizes podem ser processados por operaes aritmticas como as que fazemos com os nmeros.

Adio e subtrao: os respectivos elementos dos dois vetores so somados formando um novo vetor. Ex.:

[1 1 1] + [2 2 2] = [3 3 3]

Multiplicao por valor constante. Ex.:

3 x [1 2 3] = [3 6 9]

Transposio: Resulta da troca dos valores das linhas de um vetor ou matriz, por suas colunas. Ex.:

Multiplicao de Matrizes: Sendo o nmero de linhas da primeira igual ao nmero de colunas da segunda pode-se multiplic-las. O resultado se dar pela soma dos produtos dos elementos das linhas da primeira pelos elementos da coluna da segunda, em uma matriz com o nmero de linhas da primeira e o nmeros de colunas da segunda. Ex.:

Aritmtica de Vetores e Matrizes

Podemos utilizar diferentes sistemas de coordenadas para descrever os objetos modelados em um sistema 2D;

O sistema de coordenadas serve para nos dar uma referncia em termos de medidas do tamanho e posio dos objetos dentro de nossa rea de trabalho.

Sistemas de Coordenadas

Transformaes em Pontos e Objetos

A habilidade de representar um objeto em vrias posies no espao fundamental para compreender sua forma;

A possibilidade de submet-lo a diversas transformaes importante em diversas aplicaes da computao grfica;

As operaes lineares de rotao e translao de objetos so chamadas operaes de corpos rgidos;

A seguir veremos algumas transformaes em 2D e 3D.

Transformao de Translao

Transladar significa movimentar o objeto;

possvel efetuar a translao de pontos no plano (x,y) adicionando quantidades s suas coordenadas;

Assim, cada ponto em (x,y) pode ser movido por Tx unidades em relao ao eixo x, e por Ty unidades em relao ao eixo y;

Logo, a nova posio do ponto (x,y) passa a ser (x,y).

Transformao de Translao

Translao de um tringulo de trs unidades na horizontal e 4 na vertical. Repare que se teria o mesmo efeito transladando a origem do sistema de coordenadas para o ponto (3, 4) na primeira figura.

Transformao de Escala

Escalonar significa mudar as dimenses de escala;

Para fazer com que uma imagem definida por um conjunto de pontos mude de tamanho, teremos de multiplicar os valores de suas coordenadas por um fator de escala;

Transformar um objeto por alguma operao nada mais do que fazer essa operao com todos os seus pontos.

A mesma figura antes e depois de uma mudana de escala genrica, de na horizontal e 1/4 na vertical. Repare que esse mesmo efeito relativo seria conseguido mudando a escala do sistema de eixos para uma outra que fosse o dobro da primeira na horizontal e quatro vezes maior na vertical.

Transformao de Rotao

Rotao de um ponto P em torno da origem, passando para a posio P. Repare que se chegaria a esse mesmo ponto atravs de uma rotao de no sistema deeixos XY.

Transformao de Rotao

Rotacionar significa girar;

Se um ponto de coordenada (x,y), distante r=(x+y)1/2 da origem do sistema de coordenadas, for rotacionado de um ngulo em torno da origem, suas coordenadas, que antes eram definidas como: x = r * cos(), y = r * sen (), passam a ser descritas como (x, y) dadas por:

x = r . cos(+) = r . cos . cos r . sen . seny = r . sen(+) = r . sen . cos + r . cos . Sen

isso equivale s expresses:

x = x cos () y sen ()y = y cos () + x sen ()

Essas expresses podem ser descritas pela multiplicao do vetor de coordenadas do ponto (x y) pela matriz:

Transformao de Rotao

Essa matriz denominada matriz de rotao no plano xy por um ngulo . No caso de o objeto no estar definido na origem do sistema de coordenadas, a multiplicao de suas coordenadas por uma matriz de rotao tambm resulta em uma translao.

Regra da mo direita

Para lembrar a direo dos eixos x, y e z, use a regra da mo direita:

Mantenha sua mo posicionada de forma que consiga ver a palma de frente, com seus dedos voltados para cima;

Ento abra o polegar para a direita, mantenha o indicador para cima, e aponte o dedo mdio apontando para voc;

Seu dedo indicador aponta para y positivo, seu dedo mdio aponta para z positivo, e o polegar para x positivo;

As direes opostas representam x, y e z negativos.

ngulos de Euler

Os ngulos de Euler facilitam uma definio precisa das rotaes em relao a um sistema de eixos;

Esses ngulos definem a rotao em um plano pelo giro em torno de um vetor normal a esse plano;

+ Yaw

ngulos de Euler

PITCH

YAW

ROLL

A fotografia que se obtm com uma mquina fotogrfica real uma projeo da cena em um plano, que corresponde ao filme;

Da mesma forma que no mundo real, a imagem que se obtm da cena sinttica depende de vrios fatores que determinam como esta projetada em um plano para formar a imagem 2D exibida em algum dispositivo, como, por exemplo, o vdeo.

Ao gerar imagens de cenas 3D em computao grfica, comum fazermos uma analogia com uma mquina fotogrfica;

Nessa analogia, imaginamos um observador que, posicionado em um ponto de observao, v a cena atravs das lentes de uma cmera virtual que pode ser posicionada de forma a obter a imagem da cena, e onde pode-se definir, alm da posio da cmera, sua orientao e foco, o tipo de projeo usada e a posio dos planos que limitam a visibilidade da cena, os chamados clipping planes.

Cmera Virtual

Cmera Virtual

Coordenadas da posio da cmera, e seus 7 graus de liberdade: localizao no espao (x,y,z), ngulos de rotao em torno de cada um dos eixos (setas curvas) e foco.

Em computao grfica, o volume de viso ou view frustum a regio do espao no mundo modelado que aparecer na tela. o campo de viso da cmera O formato exato desta regio varia dependendo do tipo de lentes simuladas pela cmera, mas tipicamente um volume de uma piramide retangular.Os planos que cortam o frustum perpendicularmente a direo da viso so chamados de plano prximo (near plane) e plano distante (far plane). Objetos mas prximos a cmera do que o plano prximo ou depois do plano distante no so desenhados. Geralmente, o plano distante localizado infinitamente distante da cmera ento todos os objetos do frustum so desenhados independentemente da distncia da cmera.

Frustum

Frustum

Viewing Frustum Culling

Viewing frustum culling o processo de remover totalmente do processo de renderizao os objetos que se encontram fora do viewing frustum. Renderizar estes objetos seria uma perda de tempo visto que eles no so diretamente visveis. Em ray tracing, viewing frutum culling no pode ser executado por que objetos fora do viewing frustum podem ser visveis quando refletidos em um objeto dentro do frustum.

Transformaes Geomtricas com Opengl

Os vrtices que definem as primitivas geomtricas so definidos no OpenGL em um sistema de eixos ortogonais orientados segundo a regra da mo direita. O eixo x ser horizontal e orientado da esquerda para a direita, enquanto o eixo y ser vertical, orientado de baixo para cima.

Transformao de Translao

O comando para a translao glTranslate(TYPE x, TYPE y, TYPE z) e tem como parmetros as distncias em cada um dos eixos coordenados. Por exemplo, para mover o ponto de viso ao longo do eixo z de 5 unidades, usa-se:

glTranslatef(0.0f,0.0f,-5.0f);

A seqncia de comandos para mover todos os pontos deumobjeto, dada pelas linhas:

DesenhaObjeto( ); // Desenha o objeto na posio nas // coordenadas originaisglTranslatef(10,10,10);DesenhaObjeto( ); // Desenha o objeto deslocado de 10 // unidades em cada eixo

Transformao de Escala

O comando que permite a mudana das dimenses de um modelo glScale(TYPE x, TYPE y, TYPE z) e muda as escalas relativas a cada eixo principal;

O comando glScale relativamente simples mas a utilizao do fator de escala no-uniforme afetar os objetos desenhados;

Por exemplo, para triplicar a altura de um objeto usa-se:

glScalef(1.0f,3.0f,1.0f);

Transformao de Rotao

O comando para a rotao glRotate(TYPE angle, TYPE x, TYPE y, TYPE z) e tem como parmetro o ngulo de rotao e as coordenadas de um vetor que determina o eixo de rotao (ngulos de Euler).

Para a rotao ser feita em torno de um dos eixos principais, deve-se definir x, y e z apropriadamente como os vetores unitrios nas direes destes eixos. Por exemplo, a rotao do ponto de viso de 30 em torno do eixo x pode ser definida como:

glRotatef(30.0f,1.0f,0.0f,0.0f);

Referncias

CONCI, Aura ; Eduardo Azevedo ; LETA, F. R. . Computao Grfica - Teoria e Prtica - Vol. 2. Rio de Janeiro: Campus Elsevier, 2003.

http://pt.wikipedia.org/wiki/OpenGL.

http://www.inf.pucrs.br/~pinho/CG/Aulas/Vis2d/Instanciamento/Instanciamento.htm

http://www.dca.ufrn.br/~ambj/opengl/transformacoes.html