Buscar

CG aula09 Transf Geométricas v2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 41 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Computação Gráfica I
aula 10
Transformações Geométricas 
Simples e Compostas
Computação Gráfica I2
Introdução - Coordenadas Homogêneas
• Objetivo: facilitar a concatenação das transformações de escala e rotações com
as transformações de translação.
• O Sistema de Coordenadas Homogêneas utiliza um valor adicional para
representar um ponto num sistema de coordenadas qualquer
• A representação de uma transformação composta se reduz a uma multiplicação 
de matrizes quadradas com coordenadas homogêneas de quaisquer 
transformações simples 
Ex: Ponto no sistema 3D:
(x,y,z)→ (x´,y´,z´, M)
Onde: x = x´/M , y = y´/M e z = z´/M
Transformações Geométricas
Computação Gráfica I3
Matriz de Transformação
Considere as transformações f , g e h, que levam pontos de coordenadas (x, y, z) em
pontos de coordenadas (x’, y’, z´), tais que:
x´ = f(x, y, z)
y´ = g(x, y, z)
z´ = h(x, y, z)
Utilizando coordenadas Homogêneas, existe uma matriz A de dimensões 4 x 4, tal que:
X´ = A X, onde: X’ = (x´, y´, z´, 1) e X =(x, y, z, 1) são quartênios
Exemplo: Considere o sistema:
x´ = x + y + z
y´= 2x + y + 3z + 1
z´ = -x + 4y + 5z – 2
Esse sistema pode ser escrito na forma matricial como:
x’ 1 1 1 0 x 
y’ = 2 1 3 1  y 
z´ -1 4 5 -2 z 
1 0 0 0 1 1 
 
Transformações Geométricas
Computação Gráfica I4
 Transformações afins tem a função de modificar a posição dos 
pontos no espaço 2D ou 3D, ou de objetos contidos no espaço 2D ou 
3D.
 Essas transformações aplicadas sobre objetos, têm a propriedade de:
 Transformar linhas paralelas em linhas paralelas;
 Manter os ângulos entre as linhas do objeto.
 Essas propriedades fazem com que os objetos alterados por essas 
transformações mantenham as suas características.
 Translação, Escala e Rotação são exemplos de transformações afins 
que veremos a seguir.
Transformações Afins 
Computação Gráfica I5
 Translação: nessa transformação um deslocamento é aplicado em cada 
dimensão dos pontos de um objeto.
 Assim, uma translação no espaço 2D, significa aplicar um deslocamento 
(deltaX, deltaY) em cada ponto do objeto.
Transformações Afins - Translação
Computação Gráfica I6
Translação - Deslocamento ao longo de uma direção (sem girar)
Em Duas Dimensões:
x´ = x + xObj
y´ = y + yObj
1100
10
01
1
y
x
yObj
xObj
y
x


x x’
y
y’ 
yObj
xObj
Transformações Geométricas - Translação
Computação Gráfica I7
Translação - Deslocamento ao longo de uma direção (sem girar)
Em Três Dimensões:
x´ = x + xObj
y´ = y + yObj
z´ = z + zObj
V0
V1
V3
V2
V4
V5
V7
xObj zObj
yObj1
.
1000
100
010
001
1
z
y
x
zObj
yObj
xObj
z
y
x




Transformações Geométricas - Translação
Computação Gráfica I8
 Escala: nessa transformação um valor é multiplicado a cada dimensão dos 
pontos de um objeto.
 Essa transformação tem o objetivo de ampliar, reduzir ou distorcer o objeto 
em questão.
 Assim, uma escala no espaço 2D, significa multiplicar um valor (Sx, Sy) em 
cada ponto do objeto.
Transformações Afins - Escala
Computação Gráfica I9
Variação de escala: ampliação/redução da figura
Em Duas Dimensões:
x´= x. Sx
y´= y. Sy
• Sx <> Sy  distorção: alongamento ou encolhimento 
• Sx = Sy < 0 (por ex: –1)  imagens refletidas (mirror)
1100
00
00
1
y
x
S
S
y
x
y
x


x’ = Sx. x
x
yy’ = Sy.y
Transformações Geométricas – Escala 2D
Computação Gráfica I10
Variação de escala: ampliação/redução da figura
• Em Três Dimensões
x´= x. Sx
y´= y. Sy
z´= z. Sz
1
z
y
x
.
1000
0
zz
profObj
00
00
yy
altObj
0
000
xx
Objargl
1
z
y
x
70
32
30







V0
V1
V3
V2
V4
V5
V7
largObj
altObj
profObj
Transformações Geométricas – Escala 3D
Computação Gráfica I11
 Rotação: nessa transformação um ângulo de rotação é aplicado a cada ponto 
de um objeto, fazendo com que esse objeto gire em torno de um ponto de 
referência (normalmente a origem)
 Assim, uma rotação no espaço 2D, significa aplicar o mesmo ângulo de 
rotação em cada ponto do objeto.
Transformações Afins - Rotação
Computação Gráfica I12
UVA – Universidade Veiga de Almeida
Rotação - Em Duas Dimensões
R.sin(b) = y R.sin(a + b) = y’
R.cos(b) = x R.cos(a + b) = x’
Mas sin(a + b) = sin(a).cos(b) + sin(b).cos(a)
Assim: R.sin(a + b) = R[sin(a). cos(b) + sin(b).cos(a)] = y’
R.sin(a).cos(b) + R.sin(b).cos(a) = y’
R.cos(b).sin(a) + R.sin(b).cos(a) = y’
x.sin(a) + y.cos(a) = y’
Também cos(a + b) = cos(a).cos(b) – sin(a).sin(b)
Assim: R.cos(a + b) = R.[cos(a).cos(b) – sin(a).sin(b)] = x’
R.cos(a).cos(b) – R.sin(a).sin(b) = x’
R.cos(b).cos(a) – R.sin(b).sin(a) = x’
x.cos(a) – y.sin(a) = x’
1100
0)cos()(
0)()cos(
1
y
x
aasin
asina
y
x




x
y’
a
b
y
x’
R
R
Transformações Geométricas – Rotação 2D
Computação Gráfica I13
Rotação
Em Três Dimensões
• A rotação em três dimensões muda a direção e inclinação do objeto default, 
requerendo a definição de um ângulo de rotação e de um eixo de rotação.
Rotação em torno do eixo z
• Quando se gira um objeto em torno do eixo z, o valor da coordenada z dos
seus vértices não se altera.
• Assim, o valor de z’ deve ser o mesmo de z (z’= z), o que significa que a
terceira linha da matriz deverá ter o valor “1” na posição correspondente à
z (terceira coluna).
• Não existe nenhuma contribuição da coordenada z às demais coordenadas.
• Portanto, a terceira coluna (correspondente à coordenada z) deverá ter
valor nulo nas posições referentes às coordenadas x e y.
• Resposta: Os pontos giram no plano x-y como no caso de duas dimensões.
Transformações Geométricas – Rotação 3D
Computação Gráfica I14
• Rotação em torno do eixo z
   
   
1
.
1000
0100
00cossen
00sencos
1
z
y
x
RollObjRollObj
RollObjRollObj
z
y
x 




Observador
+Z
+X
+Y
Roll
Transformações Geométricas – Rotação 3D
Computação Gráfica I15
Rotação em torno do eixo y
• Quando se gira um objeto em torno do eixo y, o valor da 
coordenada y dos seus vértices não se altera. 
• Assim, o valor de y’ deve ser o mesmo de y (y’= y), o que significa 
que a segunda linha da matriz deverá ter o valor “1” na posição 
correspondente à y (segunda coluna). 
• Não existe nenhuma contribuição da coordenada y às demais 
coordenadas. 
• Portanto, a segunda coluna (correspondente à coordenada y) 
deverá ter valor nulo nas posições referentes às coordenadas x e z. 
• Resposta: Os pontos giram no plano x-z como no caso de duas 
dimensões.
Transformações Geométricas – Rotação 3D
Computação Gráfica I16
Rotação em torno do eixo y (cont.)
   
   
1
.
1000
0cos0sen
0010
0sen0cos
1
z
y
x
YawObjYawObj
YawObjYawObj
z
y
x





Observador
+Z
+X
+Y
Yaw
Transformações Geométricas – Rotação 3D
Computação Gráfica I17
Rotação em torno do eixo x
• Quando se gira um objeto em torno do eixo x, o valor da 
coordenada x dos seus vértices não se altera. 
• Assim, o valor de x’ deve ser o mesmo de x (x’= x), o que significa 
que a primeira linha da matriz deverá ter o valor “1” na posição 
correspondente à x (primeira coluna). 
• Não existe nenhuma contribuição da coordenada x às demais 
coordenadas. 
• Portanto, a primeira coluna (correspondente à coordenada x) 
deverá ter valor nulo nas posições referentes às coordenadas y e z. 
• Resposta: Os pontos giram no planoy-z como no caso de duas 
dimensões.
Transformações Geométricas – Rotação 3D
Computação Gráfica I18
Rotação em torno do eixo x (cont.)
   
   
1
.
1000
0cossen0
0sencos0
0001
1
z
y
x
PitchObjPitchObj
PitchObjPitchObj
z
y
x





Observador
+Z
+X
+Y
Pitch
Transformações Geométricas – Rotação 3D
Computação Gráfica I19
• As transformações geométricas são usadas para manipular um 
modelo, isto é, através delas é possível mover, rotacionar ou alterar a 
escala de um objeto. A aparência final da cena ou do objeto depende 
muito da ordem na qual estas transformações são aplicadas.
• A biblioteca gráfica OpenGL é capaz de executar transformações de 
translação, escala e rotação através de uma multiplicação de matrizes. 
A idéia central destas transformações em OpenGL é que elas podem 
ser combinadas em uma única matriz, de tal maneira que várias 
transformações geométricas possam ser aplicadas através de uma 
única operação.
• Isto ocorre porque uma transformação geométrica em OpenGL é 
armazenada internamente em uma matriz. A cada transformação que 
é aplicada, esta matriz é alterada e usada para desenhar os objetos a 
partir daquele momento. A cada nova alteração é feita uma 
composição de matrizes. 
Transformações Geométricas – Open GL
Computação Gráfica I20
• A translação é feita através da função glTranslatef(Tx, Ty, Tz),
que pode receber três números float ou double (glTranslated) como 
parâmetro. Neste caso, a matriz atual é multiplicada por uma matriz 
de translação baseada nos valores dados.
• A rotação é feita através da função glRotatef(Ângulo, x, y, z), que 
pode receber quatro números float ou double (glRotated) como 
parâmetro. Neste caso, a matriz atual é multiplicada por uma matriz 
de rotação de "Ângulo" graus ao redor do eixo definido pelo vetor 
"x,y,z" no sentido anti-horário.
• A escala é feita através da função glScalef(Ex, Ey, Ez), que pode 
receber três números float ou double (glScaled) como parâmetro. 
Neste caso, a matriz atual é multiplicada por uma matriz de escala 
baseada nos valores dados.
• Para evitar este efeito "cumulativo", é necessário utilizar as funções 
glPushMatrix() e glPopMatrix(), que salvam e restauram, respectivamente, a 
matriz atual em uma pilha interna da OpenGL.
Transformações Geométricas – Open GL
Computação Gráfica I21
• Exemplos
void Desenha(void)
{
glMatrixMode(GL_MODELVIEW); // Especifica sistema de coordenadas do modelo de objeto 3D
glLoadIdentity(); // Inicializa a matriz de transformação geométrica
glClear(GL_COLOR_BUFFER_BIT);
glTranslatef(10.0f, 20.0f, 0.0f);
glScalef(2.0f, 2.0f, 1.0f);
glRotatef(45.0f, 0.0f, 0.0f, 1.0f);
glBegin(GL_QUADS);
glVertex2i(10,10);
glVertex2i(-10,10);
glVertex2i(-10,-10);
glVertex2i(10,-10);
glEnd();
glFlush();
}:
Transformações Geométricas – Open GL
Computação Gráfica I22
Introdução
• Para funções matriciais o processo de composição é equivalente à 
multiplicação de matrizes. Por exemplo: 
122 .XTX 
1
.
1000
0
0
0
1
1
1
1
333231
232221
131211
2
2
2
z
y
x
bbb
bbb
bbb
z
y
x

• Segunda Transformação:
1
.
1000
0
0
0
1
0
0
0
333231
232221
131211
1
1
1
z
y
x
aaa
aaa
aaa
z
y
x

• Primeira Transformação:
011 .XTX 
Transformações Geométricas Compostas
Computação Gráfica I23
• Mas substituindo X1 por T1 . X0 (da primeira transformação):
X2 = T2 . T1. X0
– N-ésima Transformação: Xn = Tn....T2 . T1. X0
– Colocando: T = Tn....T2 . T1 tem-se: Xn = T. X0
• Não é preciso aplicar individualmente a todos os vértices, cada
transformação de coordenada, basta se usar a transformação composta T
(obtida como produto de matrizes de cada transformação individual) e só
então aplicar esta transformação aos vértices dos objetos.
• A última transformação sempre pré-multiplica as transformações anteriores.
Exemplos:
– Uma rotação de  seguida de translação de v tem como matriz
composta:
T = T v . R 
– Uma translação de v seguida de rotação de  tem como matriz
composta:
T = R . T v
Transformações Geométricas Compostas
Computação Gráfica I24
Composição de transformações
• Exemplo em 2D: Rotação de 90 de um triângulo e deslocamento para 
esquerda (translação), produz resultado diferente se aplicada da forma 
inversa:
Rotação
Translação
Rotação
Translação
Transformações Geométricas Compostas
Computação Gráfica I25
• Se for alterada a ordem da multiplicação das matrizes, a matriz resultante 
será diferente:
– Fazendo primeiro a rotação e depois a translação tem-se:
1100
0)cos()(
0)()cos(
100
10
01
1
y
x
aasin
asina
T
T
y
x
y
x




1100
)cos()(
)()cos(
1
y
x
Taasin
Tasina
y
x
y
x




Transformações Geométricas Compostas
Computação Gráfica I26
- Fazendo primeiro a translação e depois a rotação tem-se:
1100
10
01
100
0)cos()(
0)()cos(
1
y
x
T
T
aasin
asina
y
x
y
x




1100
)cos(.)(.)cos()(
)(.)cos(.)()cos(
1
y
x
aTasinTaasin
asibTaTasina
y
x
yx
yx




Transformações Geométricas Compostas
Computação Gráfica I27
Composição de transformações
• A combinação da seqüência de transformações em uma única 
transformação pode produzir o mesmo efeito da aplicação seqüencial das 
transformações originais. 
• A operação de composição não é comutativa,
• A alteração da ordem da aplicação das transformações destrói o resultado 
final.
Transformações Geométricas Compostas
Computação Gráfica I28
 Na prática, a movimentação de polígonos e segmentos de reta em um plano 
2D é obtido através da composição de um conjunto de transformações.
 Ao compor transformações é importante notar que a ordem em que as 
transformações são aplicadas é importante, ou seja, nem sempre vale a 
propriedade comutativa !
 Exemplo: um quadrado (2, 2), (4, 2), (4, 4), (2, 4)
 Translação com dx=3 e dy=3
 Rotação de 90º em torno da origem (seno = 1 e coseno = 0)
Composição de Transformações
Computação Gráfica I29
 Aplicando:
1) Translação com dx=3 e dy=3
2) Rotação de 90º (seno = 1 e coseno = 0)
temos os pontos (-5,5), (-5, 7), (-7,7), (-7,5).
Composição de Transformações
Computação Gráfica I30
 Aplicando:
1) Rotação de 90º (seno = 1 e coseno = 0)
2) Translação com dx=3 e dy=3
temos os pontos (1,5), (1,7),(-1,7), (-1, 5)
Composição de Transformações
Computação Gráfica I31
 Exercício 1: defina a sequência e os parâmetros das transformações 
necessárias para gerar a figura 2 a partir da figura 1.
Composição de Transformações
Computação Gráfica I32
 Exercício 1: defina a sequência e os parâmetros das transformações 
necessárias para gerar a figura 2 a partir da figura 1.
Escala: sx=2 sy=2
Translação: dx=12 dy=12
Composição de Transformações
Computação Gráfica I33
 Exercício 2: defina a sequência e os parâmetros das transformações 
necessárias para gerar a figura 2 a partir da figura 1.
Composição de Transformações
Computação Gráfica I34
 Exercício 2: defina a sequência e os parâmetros das transformações 
necessárias para gerar a figura 2 a partir da figura 1.
Translação: dx=-2 dy=6
Rotação: 45º
Composição de Transformações
Computação Gráfica I35
 Exercício 3: defina a sequência e os parâmetros das transformações 
necessárias para gerar a figura 2 a partir da figura 1.
Composição de Transformações
Computação Gráfica I36
 Exercício3: defina a sequência e os parâmetros das transformações 
necessárias para gerar a figura 2 a partir da figura 1.
Translação: dx=-2 dy=6
Rotação: 45º
Translação: dx=5 dy=-1
Composição de Transformações
Computação Gráfica I37
 Exercício 4: defina a sequência e os parâmetros das transformações 
necessárias para gerar a figura 2 a partir da figura 1.
Composição de Transformações
Computação Gráfica I38
 Exercício 4: defina a sequência e os parâmetros das transformações 
necessárias para gerar a figura 2 a partir da figura 1.
Translação: dx=2 dy=3
Rotação: 90º
Translação: dx=-1 dy=2
Composição de Transformações
Computação Gráfica I39
Transformações para Coordenadas da Câmera
• A cena, vista da câmera, exige os objetos referenciados ao sistema de coordenadas 
da câmera.
• SOLUÇÃO: Mover os objetos para o sistema de coordenadas da câmera, e em 
seguida retornar com os objetos para sua posição original, mantendo o sistema de 
coordenadas dos objetos fixo no sistema de coordenadas da câmera.
– Associar o sistema de coordenadas da câmera ao sistema de coordenadas do 
objeto (eqüivale a colocar o centro do objeto no sistema de coordenadas da 
câmera.
– Mover o objeto em direção oposta à posição da câmera, mantendo seu sistema 
de coordenadas centrado na câmera. 
Se a câmera roda de  => o objeto roda de -
Transformações Geométricas – Câmera
Computação Gráfica I40
Construindo métodos para Transformações da Câmera (Observador)
• Recalcula-se as coordenadas do objeto em relação à câmera através de 
transformações de escalonamento, rotação e translação. 
• Os valores das novas coordenadas serão exatamente os mesmos obtidos 
com a câmera fixa e o objeto movendo-se por transformações inversas:
 Se a câmera translada de v => o objeto translada de –v
 Se a câmera roda de  => o objeto roda de -
 Se a câmera aproxima-se de Sx => o objeto cresce de 1 / Sx
• Considerando que as transformações geométricas alteram os vértices reais 
e as transformações de coordenadas criam vértices virtuais, não alterando 
as coordenadas dos vértices reais (permanecem onde estão), tem-se:
Transformações
Coordenadas Geométrica
Translação T v T - v
Rotação R  R - 
Escalonamento S Sx, Sy, Sz S 1/Sx, 1/Sy, 1/Sz
Transformações Geométricas – Câmera
Computação Gráfica I41
Métodos para Transformações da Câmera (Observador)
void EspecificaParametrosVisualizacao(void)
{
// Especifica sistema de coordenadas de projeção
glMatrixMode(GL_PROJECTION);
// Inicializa sistema de coordenadas de projeção
glLoadIdentity();
// Especifica a projeção perspectiva
gluPerspective(angle,fAspect,0.1,500);
// Especifica sistema de coordenadas do modelo
glMatrixMode(GL_MODELVIEW);
// Inicializa sistema de coordenadas do modelo
glLoadIdentity();
// Especifica posição do observador e do alvo
gluLookAt(0,80,200, 0,0,0, 0,1,0);
}
Transformações Geométricas – Câmera

Continue navegando