Post on 13-Nov-2018
Transformações Geométricas
Profª. Alessandra Martins Coelho
março/2013
Objetivos
• Entender os princípios das transformações geométricas do tipo translação, rotação e escalamento.
• Efetuar transformações geométricas utilizando coordenadas homogêneas.
Fundamentos
• Transformações geométricas envolvem operações com vetores e matrizes, do tipo soma e multiplicação, além de conhecimentos básicos de álgebra e geometria.
O que é uma matriz?
• A matriz é um conjunto de elementos, organizados em linhas e colunas.
Operações Básicas
• Adição, subtração, multiplicação
Multiplicação
• AB=BA?
Multiplicação
• AB=BA?
A multiplicação não é comutativa
Identidade
AI = AAA-1= I
Inversa
Inversa
L1 = L1 + L2*(-1)
L2 = L2 + L1*(-1)
L3 = L2+ L1*(-2)
Inversa
L3=L3+L2*(-3)
L3=L3*(-1)
L2 = L2 + L3*(-1)
Inversa
Determinante
Determinante
Matrizes Homogêneas
• Problema: como incluir translações em transformações (e fazer transformações em perspectiva)
• Solução: adicionar uma dimensão extra
Bases ortonormais
• X, Y, Z é uma base ortonormal. Podemos descrever qualquer ponto 3D como uma combinação linear destes vetores.
Transformações básicas -OpenGL
• Translação
glTranslatef(dx, dy, dz);
• Escalamento
glScalef(sx, sy, sz);
• Rotação
glRotatef(ang, x, y, z);
• Para facilitar a visualização dos processos geométricos envolvidos, vamos iniciar o nosso estudo de transformações no R2
• uma transformação T no R2 é uma função que associa a cada ponto p do plano um novo ponto p' tal que:
p'= T(p)
ou
Transformação no R²
• Um exemplo de uma transformação genérica pode ser ilustrada por
• Uma transformação é dita linear quando a transformada de uma combinação linear for sempre igual à combinação linear dos vetores transformados.
• para quaisquer p1, p2 pertencentes ao plano ou ao espaço e quaisquer que sejam a1, a2
pertencentes aos reais
• quaisquer que sejam a1, a2 pertencentes aos reais, T (a1p1 + a2p2) = a1T( p1) + a2T(p2)
• T(p)=Ap
• Para determinar a matriz associada basta observar que
se tomarmos
Basta Aplicar T aos Vetores da Base
)()()(
)0,..,0,1,0,0(,
11
1
∑∑
∑
==
=
==
==
n
i iii
n
i i
ii
n
i
i
uTvuvTvT
uuvv
=
=
3
2
1
33'
23'
13'
32'
22'
12
'
31'
21'
11'
3
2
1
321))(),(),(()(
v
v
v
uuu
uuu
uuu
v
v
v
uTuTuTvT
Transformações Lineares Bidimensionais
• A origem é o único ponto fixo.
– Logo, a translação não é uma transformação linear.
• São representadas por matrizes 2 x 2.
+
+
=
=
dybx
cyax
y
x
db
caT
Translação
• É uma operação que desloca pontos em uma• determinada direção. Define-se através da equação:
P’=P+Ttal que, para o caso 2D
Onde:• x, y são os pontos originais; • x’, y ’ são os pontos deslocados; e • dx, dy correspondem ao deslocamento nas direções x e
y, respectivamente.
Translação
• Exemplo 2D
Escala
• Escalamento pode tornar um objeto maior ou menor. A equação P’=S.P define essa operação.
tal que, para o caso 2D
Exemplo
Rotação
• Rotaciona (gira) um objeto de um determinado ângulo θ. É dada pela equação: P’ = R.Ptal que, para o caso 2D.
Exemplo
Rotação/Escala
• as operações de escalamento e rotação também deslocam o objeto, pois foram definidas a partir de um ponto na origem.
• para que não ocorra translação desnecessária no objeto é preciso realizar as seguintes etapas:
Rotação/Escala
Coordenadas homogêneas
• As operações matriciais diferem entre adição (translação) e multiplicação (rotação/escala).
P’ = R ・PP’ = S ・PP’ = P + T
• Uma forma de tratar as transformações através da mesma operação é expressar os pontos em COORDENADAS HOMOGÊNEAS.
Coordenadas homogêneas
• Em coordenadas homogêneas, uma terceira coordenada é adicionada (caso 2D)
• E as transformações são escritas na forma
Transformações 3D
• Matrizes de transformações para o caso 3D
Transformações 3D
Transformações 3D
X
Z
Y
Outras Transformações 3D
• Cisalhamento • Reflexão
Transformações - OpenGL
• O OpenGL trabalha com matrizes de transformações
• As operações são efetuadas via multiplicação de matrizes, de acordo com o estado existente
• Portanto, é necessário “carregar” a matriz identidade
• glLoadIdentity();
• OpenGL trabalha com matrizes de transformações...
• Utiliza-se o comando glMatrixMode
Parâmetro GL_PROJECTION antes dos comandos que especificam o tipo de projeção (glOrtho, por exemplo).Parâmetro GL_MODELVIEW antes de transformações geométricas.
• Uma transformação pode alterar todos os objetos na sequência: não desejado, dependendo da aplicação
• OpenGL: escopo das transformações...São utilizados comando glPushMatrix() e glPopMatrix() para definir início e fim do bloco de objetos onde será(ão) efetuada(s) a(s) transformação(ões).
void display(void){glClear (GL_COLOR_BUFFER_BIT);glPushMatrix();/* Cubo 1 */glPushMatrix();glTranslatef (-2.0, 0.0, 0.0);glScalef (2.0, 1.0, 4.0);glutWireCube (1.0);glPopMatrix();/* Cubo 2 */glPushMatrix();glRotatef (25.0, 0.0, 0.0, 1.0);glTranslatef (2.0, 0.0, 0.0);glScalef (2.0, 1.0, 4.0);glutWireCube (1.0);glPopMatrix();/* Cubo 3 */glPushMatrix();glTranslatef (0.0, 2.0, 0.0);glScalef (2.0, 1.0, 4.0);glutWireCube (1.0);glPopMatrix();/* Cubo 4 */glPushMatrix();glTranslatef (0.0, -2.0, 0.0);glScalef (2.0, 1.0, 4.0);glutWireCube (1.0);glPopMatrix();
glPopMatrix();glutSwapBuffers();
Referências
• GOMES, Jonas; VELHO, Luiz. Fundamentos da Computação gráfica. Rio de Janeiro: IMPA, 2008.
• GUHA, S. Computer Graphics throughOpenGL: from theory to experiments Chapman & Hall/CRC. Taylor & Francis Group, 2011
• CARVALHO. M. A. G. Computação Gráfica: Transformações Geométricas. Notas de Aula. 2009. Disponível em:www.ceset.unicamp.br/~magic/ST765/CG2009_Transformacoes.pdf . Acesso em: 18 fev 2013.