1 COMPUTAÇÃO GRÁFICA E INTERFACES Sumário Modelos e

Propaganda
Sumário
COMPUTAÇÃO GRÁFICA E INTERFACES
Transformações Geométricas e
Visualização 2D
◊ Modelos e modelagem
◊ Transformações geométricas
◊ Pipeline de visualização 2D
◊ Transformação de coordenadas Window-Viewport
◊ Recorte (Clipping)
Carlos Carreto
Curso de Engenharia Informática
Ano lectivo 2003/2004
Escola Superior de Tecnologia e Gestão da Guarda
Modelos e modelagem
Modelos e modelagem
Modelo
É uma representação de uma entidade física ou abstracta.
Modelos em computação gráfica
Representam os objectos e as cenas que se pretendem
desenhar.
Modelagem
É o processo de representar algo através de modelos.
Modelagem em computação gráfica
É o processo pelo qual se descreve um modelo (objecto ou cena),
de forma a que seja possível desenha-los.
1
Modelos e modelagem
Modelos e modelagem
Estruturas de dadas
Os modelos são armazenados em estruturas de dados que
armazenam a informação sobre os objectos e cenas. Existem
várias técnicas de representação e armazenamento que
dependem da natureza dos modelos e das operações que
queremos fazer com eles.
Técnicas de representação
Modelos e modelagem
Modelos e modelagem
Técnicas de representação
Técnicas de representação
Por amostragem de pontos:
• armazenamento dos pontos e identificação do método para a
aproximação da curva ou superfície amostrada.
Por enumeração de pontos
• imagem constituída por uma matriz de pontos (bitmap).
Por entidades matemáticas com representação analítica
conhecida:
• círculos, linhas, curvas, etc
• representação por parâmetros ou coeficientes que permitem a
reconstrução dos objectos através de um procedimento.
2
Modelos e modelagem
Modelos e modelagem
Técnicas de representação
Técnicas de representação
Por decomposição planar
• representação de áreas de uma superfície por subdivisão
sucessiva e hierárquica do plano onde está definida.
Por vértices e arestas
• é a técnica de representação mais comum.
• são armazenados os vértices e as arestas que aproximam os
contornos dos objectos.
Modelos e modelagem
Modelos e modelagem
Representação por vértices e arestas
Representação por procedimentos
Quando o armazenamento numa única estrutura de dados é
muito custoso, podemos usar a modelagem baseada em
procedimentos onde apenas armazenamos um conjunto mínimo
de parâmetros e a identificação de um procedimento capaz de
reconstruir o modelo a partir desses parâmetros. É ocaso dos Lsystems e dos fractais.
2
3
4
1
Vértices
Arestas
X1, y1
1, 2
X2, y2
1, 3
X3, y3
2, 3
X4, y4
3, 4
...
...
3
Pipeline de Visualização 2D
Transformações geométricas 2D
Visão preliminar
Na maioria das aplicações os objectos que formam uma cena
podem sofrear manipulações que alteram o seu aspecto. Estas
manipulações são realizadas através de transformações
geométricas.
Modelo
Processo de
Visualização 2D
Imagem
Os objectos são formados por primitivas gráficas tais como
pontos, linhas, curvas, etc. Estas primitivas são definidas por
coordenadas cartesianos de pontos no espaço. As
transformações geométricas são aplicadas a estas coordenada
cartesianos alterando uniformemente o aspecto dos objectos,
mas não a sua topologia. Isto é, o modelo do objecto não é
alterado, pois as transformações geométricas são aplicadas
apenas no momento em que o objecto é desenhado.
Transformações geométricas 2D
Transformações geométricas 2D
As transformações geométricas básicas são:
Translação
Translação
A translação troca um objecto de lugar adicionando uma
constante de deslocamento às coordenadas de cada ponto do
objecto.
Variação de Escala
X'= X + TX

Y'= Y + TY
Na forma matricial:
Rotação
[X'
Y'] = [X
Y ] + [TX
TY ]
4
Transformações geométricas 2D
Transformações geométricas 2D
Translação
Exemplo com Tx = 2 e Ty = -1
Variação de escala
A variação de escala altera o tamanho e/ou as proporções do
objecto multiplicando as coordenada de cada ponto por factores
de escala.
X'= X * EX

Y'= Y * EY
Na forma matricial:
[X'
Y'] = [X
E
Y]*  X
0
0
EY 
Transformações geométricas 2D
Transformações geométricas 2D
Variação de escala
Exemplo com Ex = 2 e Ey = 1
Variação de escala em relação a um ponto fixo
1º Translação de modo a fazer coincidir o ponto com a origem;
2º Variação de escala;
3º Translação inversa da primeira.
5
Transformações geométricas 2D
Transformações geométricas 2D
Variação de escala em relação a um ponto fixo
Exemplo: P(2, 2), EX = 2 e EY = 2
Rotação
X = cos φ
Y = sen φ
(X’, Y’)
(X, Y)
θ
φ
X’ = cos (φ + θ) = cos φ cos θ – sen φ sen θ
y’ = sen (φ + θ) = sen φ cos θ + cos φ sen θ
X’ = X . cos θ – Y . sen θ
Y’ = Y . cos θ + X . sen θ
Transformações geométricas 2D
Transformações geométricas 2D
Rotação
A rotação roda todos os pontos do objecto, segundo um ângulo θ
em relação à origem.
Rotação
Exemplo com θ = 90º
X'= X * cos θ - Y * sen θ

Y'= X * sen θ + Y * cos θ
Na forma matricial:
[X'
Y'] = [X
 cosθ senθ 
Y] * 

- senθ cosθ 
6
Transformações geométricas 2D
Transformações geométricas 2D
Rotação em relação a um ponto arbitrário
Coordenadas homogéneas
Verificamos que a representação matricial das transformações
não é sempre igual. A translação é tratada como uma soma,
enquanto que a variação de escala e a rotação são tratadas como
multiplicações.
1º Translação de modo a fazer coincidir o ponto com a origem;
2º Rotação;
3º Translação inversa da primeira.
Unindo tudo numa única formula:
As transformações devem ser tratadas da mesma maneira para
que possam ser facilmente combinadas.
X'= (X - Xr ) * cos θ - (Y - Yr ) * sen θ

Y'= (Y - Yr ) * cos θ + (X − Xr ) * sen θ
Onde (Xr, Yr) é o ponto de referencia, em torno do qual será
feita a rotação
Para uniformizar a representação matricial das transformações
usamos coordenadas homogéneas.
Transformações geométricas 2D
Transformações geométricas 2D
Coordenadas homogéneas
P(X, Y) -> P(WX, WY, W), para W≠0
Na computação gráfica consideramos W = 1
Composição das transformações
Uma vez que ao usar coordenadas homogéneas, todas as
transformações são tratadas como multiplicações, podemos
criar uma transformação composta, combinando várias
matrizes numa só, multiplicando-as. Depois multiplicamos os
vários pontos do objecto pela matriz resultante.
Translação:
Variação de escala:
Rotação
[X'
[X'
[X'
Y' 1] = [X
Y' 1] = [X
Y' 1] = [X
1
Y 1] *  0
TX
EX
Y 1] *  0
 0
0
1
TY
0
EY
0
0
0 
1 
0
0 
1 
 cosθ senθ 0 
Y 1] * - senθ cosθ 0 
 0
0
1 
Exemplo:
Ponto P(3, 1, 1)
Transformações E(2, 2) e T(2, 1)
P’ = (P * E) * T ou P’ = P * (T * E)
7
Transformações geométricas 2D
Pipeline de visualização 2D
Composição das transformações
P’ = (P * E) * T
Sistema de Referência do Objecto (SRO)
O SRO é o espaço de coordenadas mais adequado à criação do
objecto.
[X'
2 0 0 
 1 0 0
Y' 1] = [3 1 1] * 0 2 0  = [6 2 1] * 0 1 0  = [8 3 1]
0 0 1 
2 1 1 
P’ = P * (T * E)
2 0 0   1
0 2 0  * 0
 

0 0 1  2
[X'
0
1
1
0  2 0 0 
0  = 0 2 0 
1  2 1 1 
2 0 0 
Y' 1] = [3 1 1] * 0 2 0  = [8 3 1]
2 1 1 
Pipeline de visualização 2D
Pipeline de Visualização 2D
Sistema de Referência do Universo (SRU)
Depois de modelados, os objectos são posicionados no
universo. O SRU é o espaço de coordenadas do universo.
Revisitado
Modelo
(SRO)
Transformações
geométricas
Processo de
Visualização 2D
(SRU)
Imagem
8
Processo de visualização
Instanciação
Por vezes os objectos de uma cena são derivados de um mesmo modelo, isto
é, são instâncias do mesmo modelo.
Processo de visualização
Instanciação
O uso de instâncias torna o universo menor pois para representar
instâncias diferentes basta armazenar o nome do modelo e os parâmetros
de instanciação.
O armazenamento das instâncias pode ser realizado usando tabelas ou
listas com o nome do modelo e os valores dos parâmetros de instanciação
Modelo
Cor
TX
TY
EX
EY
θ
Casa
As instâncias possuem a mesma estrutura básica, mas diferem num
conjunto de parâmetros como a cor, o tamanho, a posição, etc.
Árvore1
Árvore2
...
Processo de visualização
Processo de visualização
Mapeamento
Notemos que os modelos são criados no SRO para posterior
instanciação no SRU.
Mapeamento
O mapeamento converte as coordenadas do sistema de
referência do universo (SRU) para o sistema de referência do
dispositivo (SRD).
As informação do modelo, bem como das instâncias referem-se
à aplicação e não ao dispositivo. Isto é, os modelos são criados
independentemente do dispositivo.
PSRU (XU, YU)
PSRD (XD, YD)
Para visualizar as instâncias é então necessário converter as
coordenadas do modelo para coordenadas do dispositivo.
9
Processo de visualização
Processo de visualização
Mapeamento
Para determinar a coordenada XD
Mapeamento
Para determinar a coordenada YD
(Invertemos a relação dos eixos YY porque crescem em sentidos opostos )
XDmax
XUmax
X D − X Dmin
X U − X Umin
=
X Dmax − X Dmin
X Umax − X Umin
XD
XU
(XDmax − XDmin ) * (XU − XUmin )
+ XDmin
XUmax − XUmin
XDmin
YD − YDmax
YU − YUmin
=
YDmin − YDmax
YUmax − YUmin
YD
YU
XD =
XUmin
YDmin
YUmax
YD =
(YDmin − YDmax ) * (YU − YUmin )
+ YDmax
YUmax − YUmin
YDmax
YUmin
Processo de visualização
Processo de visualização
Mapeamento
Notar que o mapeamento pode ser visto como uma transformação
composta que inclui uma translação, uma variação de escala e
outra translação.
Window e Viewport
A Window é a área do universo que interessa visualizar e tem coordenadas
no SRU.
A Viewport é a área do dispositivo onde o conteúdo da Window vai ser
mapeado e tem coordenadas do SRD.
Window
XD =
(XDmax − XDmin ) * (XU − XUmin )
+ XDmin
XUmax − XUmin
Viewport
10
Processo de visualização
Pipeline de Visualização 2D
Recorte (Clipping)
Modelo
(Descrição
geométrica
No SRO)
É necessário haver uma etapa de recorte que elimine os objectos que ficam
total ou parcialmente fora do Window.
Transformações
Geométricas
Instanciação dos objectos
(SRU)
Especificação da
Window
Recorte
(SRU)
Especificação da
Viewport
Mapeamento SRU -> SRD
Rasterização
(SRD)
Imagem
(Matriz de
pontos)
11
Download