Computação Gráfica: Aula2: Curvas e Superfícies psergio [email protected].
Computação Gráfica Teórica Centro Universitário da FEI Curso de Ciência da Computação Prof....
Transcript of Computação Gráfica Teórica Centro Universitário da FEI Curso de Ciência da Computação Prof....
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