Upload
internet
View
115
Download
4
Embed Size (px)
Citation preview
Computação Gráfica Teórica
Centro Universitário da FEICurso de Ciência da Computação
Prof. Paulo Sérgio Rodrigueswww.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
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 de corpos físicos a serem estudadas:– 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: 1. 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.
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)
295
63
54
71
)532(
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 quando Multiplicada por outra Matriz tem a Propriedade de Reproduzir essa mesma Matriz. Este tipo de Matriz recebe o nome de Identidade.
I . A = A
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 + dxyp’= 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 * sxyp’= 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:
Computação Gráfica Teórica
Rotação (2D)
x
y
rP(x,y)
P’(x’,y’)
x = r.cos()y = r.sin()
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()
r
Rotação (2D)
P´= R()*P
)cos(*)sin(*
)sin(*)cos(*
1
*
100
0)cos()sin(
0)sin()cos(
1
yxy
yxx
y
x
y
x
x
y
x
y
Rotação ao redor do Centro de massa
1
2
x
y
2
P´= T(-cmx, -cmy)*P
P´´= R()*P´
P´´´= T(cmx, cmy)*P´´
x
y
x
y
x
y
(cmx,cmy)
Composições de Transformações Rígidas 2D
Escala ao redor do centro de massa do objetoP´= T(cmx, cmy)* E(Ex, Ey)* T(-cmx, -cmy)*P
Rotação ao redor do centro de massa do objetoP´= T(cmx, cmy)* R()* T(-cmx, -cmy)*P
Uma única matriz 3x3 que resulta em duas translações e uma escala
Dois exemplos:
Transformadas Geométricas 3D (Translação)
Translação: P´= T(x, y, y)*P
zzz
yyy
xxx
z
y
x
z
y
x
z
y
x
1
*
1000
100
010
001
1
Escala 3D
Escala: P´= E(Ex, Ey, Ez) * P
Ezzz
Eyyy
Exxx
z
y
x
Ez
Ey
Ex
z
y
x
*
*
*
1
*
1000
000
000
000
1
Escala ao redor do centro de massa do objetoP´= 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)
zz
yxsiny
ysinxx
z
y
x
sin
sin
z
y
x
)cos()(
)()cos(
1
*
1000
0100
00)cos()(
00)()cos(
1
Rotação ao redor do centro de massa do objetoP´= T(cmx, cmy, cmz)* Rz()*T(-cmx, -cmy, -cmz)*P
y
x
z
Observador
Rotação (eixo x fixo)P´= Rx()*P (sentido de y para z)
)cos()(
)()cos(
1
*
1000
0)cos()(0
0)()cos(0
0001
1
zysinz
zsinyy
xx
z
y
x
sin
sin
z
y
x
Rotação ao redor do centro de massa do objetoP´= T(cmx, cmy, cmz)* Rx()*T(-cmx, -cmy, -cmz)*P
y
x
z
Observador
Rotação (eixo y fixo)P´= Ry()*P (sentido de z para x)
)()cos(
)cos()(
1
*
1000
0)cos(0)(
0010
0)(0)cos(
1
xsinzz
yy
xzsinx
z
y
x
sin
sin
z
y
x
Rotação ao redor do centro de massa do objetoP´= T(cmx, cmy, cmz)* Ry()*T(-cmx, -cmy, -cmz)*P
y
x
z
Observador
Transformação genérica ao redor do centro de massa:P´= T(cmx, cmy, cmz)* Rz()* Ry()* Rx()* T(-cmx, -cmy, -cmz)*P
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 corrente denominada de matriz MODELVIEW.
Computação Gráfica Teórica