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(
ysin(

)
cos(

)
  

0
1
 
 0
0 x



0*y
1

1

)y*sin(
)
xx*cos(


)y*cos(
)
yx*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
Download

Aula1 - Centro Universitário FEI