Está en la página 1de 51

Contedo:

Professores:
Anselmo Montenegro
Esteban Clua
Aula 9
1
- Transformaes geomtricas no
espao
ATENO: O professor menciona aula 8, mas na verdade o nmero correto 9.
Transformaes geomtricas no espao
2
DADOS Computao
Grfica
IMAGENS
Introduo
As transformaes geomtricas so operaes
fundamentais para a modelagem, visualizao e
interao com objetos grficos 3D.
Descreveremos os seguintes tpicos:
- Escalas, rotaes e translaes no espao.
- Esquemas para representao de orientaes.
- Composio de transformaes:
Instanciao de objetos.
Hierarquia.
Transformaes geomtricas no espao
3
Introduo
Transformaes de escala, rotao e translao so
fundamentais para a criao de cenas compostas
por diversos objetos.
As matrizes de translao e escala so de fato uma
simples extenso das matrizes de transformao
definidas no plano.
Transformaes geomtricas no espao
4
Translaes e escalas
Transformaes geomtricas no espao
5
Rotaes
As operaes de rotao no espao so mais
complexas do que no plano.
Uma extenso natural definirmos a rotao de
um objeto a partir da rotao em torno dos eixos
cartesianos.
Transformaes geomtricas no espao
6
Rotaes
Podemos facilmente definir as matrizes de rotao
em cada eixo.
As colunas de uma matriz de rotao em torno de um
certo eixo cartesiano so dados pela transformao
dos vetores da base cannica.
Transformaes geomtricas no espao
7
Rotaes no eixo z
Transformaes geomtricas no espao
8
Rotaes no eixo x
Transformaes geomtricas no espao
9
Rotaes no eixo y
Transformaes geomtricas no espao
10
Rotaes nos eixos cartesianos
Transformaes geomtricas no espao
11
Matrizes de transformao
Em geral, uma matriz de transformao em
coordenadas homogneas tem a seguinte estrutura:
Se a matriz M e o vetor s tem dimenses 2x2 e 1x2,
respectivamente, ento a transformao ocorre no
plano homogneo.
Se as dimenses forem 3x3 e 3x1, respectivamente,
ento a transformao ocorre no espao homogneo.
Transformaes geomtricas no espao
12
Matrizes de transformao
A forma matricial homognea pode representar
a) Transformaes lineares.
b) Translaes
c) Transformaes afins.
Transformaes geomtricas no espao
13
http://sdcd.gsfc.nasa.gov/SVS/
stories/solve/toms.html
Matrizes de transformao
A matriz que representa uma transformao afim
representa uma transformao linear seguida de
uma translao:
Caso invertssemos a ordem teramos
Transformaes geomtricas no espao
14
Tons de cinza Borramento Deteco de arestas
Matrizes de transformao
Como podemos ver, a ordem influi no resultado.
Na segunda ordem, a translao no pode ser lida
diretamente da ltima coluna ltima matriz.
Como a ltima linha o vetor [0..0 1] ento estas
matrizes mantm os pontos no plano w = 1.
Nas transformaes projetivas, que sero vistas
mais tarde, a ltima linha assume outros valores e
os pontos podem ser deslocados do plano w=1.
Transformaes geomtricas no espao
15
LAK 5519
Rotaes e orientaes
Transformaes geomtricas no espao
16
ngulos de Euler
J que as rotaes no comutam devemos adotar
uma ordem especfica.
Esta forma de representar orientaes denominada
ngulos de Euler.
Na literatura de aeronutica estas rotaes so
chamadas de
- Roll - giro em torno do eixo longitudinal
- Pitch - ngulo de ataque.
- Yaw - giro em torno do eixo vertical.
Transformaes geomtricas no espao
17
ngulos de Euler
Transformaes geomtricas no espao
18
Modelos
matemticos
Modelos
fsicos
Estruturas de
dados e algoritmos.
Esquemas de
representao.
Universo
Fsico
Universo
Matemtico
Universo de
Representao
Universo de
Implementao
ngulos de Euler
Problemas:
- Gimbal lock: perda de graus de liberdade em
certas configuraes.
- No so parmetros adequados para interpolaes.
Transformaes geomtricas no espao
19
ngulos de Euler - Gimbal Lock
A ltima operao no ser possvel.
Original
Animador deseja rodar o boneco de lado ( ) graus, inclin-lo
para frente ( ) e levantar seu brao esquerdo.
Transformaes geomtricas no espao
20
EFICINCIA REALISMO
ngulos de Euler - Gimbal Lock
Mesmo resultado obtido apenas com rotaes no
eixo x e y.
Original
Transformaes geomtricas no espao
21
ngulos de Euler
Apesar de especificarmos 2 parmetros s
temos 1 grau de liberdade
Transformaes geomtricas no espao
22
ngulos de Euler - interpolao
Note que em uma
interpolao mais
natural a cabea no
sairia tanto do plano
xz.
Interpolao entre
as orientaes
(0,90,0) e (0,90,0).
Transformaes geomtricas no espao
23
Outras formas de se expecificar orientaes
Rotaes em torno de um eixo:
- Euler provou em 1775 que dadas duas posies
rotacionadas de um objeto, sempre possvel
levar uma posio a outra atravs de uma rotao
de um ngulo em torno de um eixo.
- Esta rotao tem a mesmo comportamento que a
interpolao de duas posies atravs de um
segmento de reta que os une.
- Sai da primeira posio indo para a segunda sem
oscilaes.
Transformaes geomtricas no espao
24
Outras formas de se expecificar orientaes
Quaternions
- A especificao de orientaes atravs de rotaes em torno
de um eixo no fornece uma lgebra simples para as diversas
operaes necessrias para animao.
- Para isso existe uma estrutura matemtica mais adequada
denominada Quaternions.
- Um boa introduo aos Quaternions pode ser encontrada em:
http://www.gamasutra.com/features/19980703/quaternions_01.htm
Transformaes geomtricas no espao
25
Transformaes em OpenGL
Translao
Rotao de angle graus em torno de um eixo (x,y,z).
Escala
- glTranslate{fd}(TYPE x, TYPE y, TYPE z);
- glRotate{fd}(TYPE angle,TYPE x, TYPE y, TYPE z);
- glScale{fd}(TYPE sx, TYPE sy, TYPE sz);
Transformaes geomtricas no espao
26
Transformaes em OpenGL
Para transformarmos um certo objeto poligonal
basta aplicar a matriz de transformao em cada
um dos seus vrtices.
Por outro lado, no caso geral, as normais destes
objetos no seguem a mesma transformao.
Exemplo:
Transformaes geomtricas no espao
27
Transformaes em OpenGL
Considere o plano com equao
Se incluirmos a matriz identidade I = M
-1
M no
alteramos a equao abaixo:
Transformaes geomtricas no espao
28
Xlib GKS Motif QuickDraw PHIGS RenderWare HOOPS ToolBook IUP/lua CanvasDraw Delphi VisualBasic Java DirectX C / C++ GLUT OpenGL
C &OpenGL
(c/ GLUT)
Transformaes em OpenGL
A equao do plano transformado n.p=0
Logo, temos que a normal transformada
Transformaes geomtricas no espao
29
Transformaes em OpenGL
O processo de instanciao de objeto permite a
especificao de modelos complexos atravs de
modelos padro simples e transformaes
geomtricas.
fundamental para a descrio de objetos compostos
de vrias partes, principalmente quando h vnculo
entre as mesmas.
Devemos primeiramente esclarecer a questo de
ordem e interpretao das transformaes geomtricas
compostas.
Transformaes geomtricas no espao
30
Transformaes em OpenGL
Transformaes geomtricas no espao
31
Transformaes em OpenGL
Transformaes geomtricas no espao
32
Transformaes em OpenGL
s vezes difcil especificar transformaes
geomtricas nos casos em que a existe dependncia
entre a posio das partes de um objeto composto.
Nestas situaes conveniente adotar uma outra
interpretao geomtrica para as transformaes
compostas.
Transformaes geomtricas no espao
33
Transformaes em OpenGL
Ao invs de considerarmos que as transformaes
ocorrem nos objetos, consideramos que elas
ocorrem em um sistema de eixos locais que rodam
e transladam.
A idia que os eixos locais inicialmente coincidem
com o sistema de referncia global.
A cada rotao e translao, um dado eixo local
muda de posio e/ou orientao.
Transformaes geomtricas no espao
34
Transformaes em OpenGL
Transformaes geomtricas no espao
35
Transformaes em OpenGL
Transformaes geomtricas no espao
36
Transformaes em OpenGL
Transformaes geomtricas no espao
37
Transformaes em OpenGL
Transformaes geomtricas no espao
38
Transformaes em OpenGL
Transformaes geomtricas no espao
39
Transformaes em OpenGL
Transformaes geomtricas no espao
40
Transformaes em OpenGL
Desenha a base (em xyz);
Translada em y;
Roda em y;
Roda em z;
Desenha o ombro (em x1y1z1)
Translada em y1 de d1/2;
Desenha o ante-brao (em x2y2z2);
Translada em y2 de d1/2;
Roda em z2
Desenha o cotovelo (em x3y3z3);
Translada em y3 de d2/2;
Desenha o brao (em x4y4z4);
Translada em y4 de d2/2;
Roda em z4;
Desenha o pulso (em x5y5z5);
Translada em y5
Desenha a mo (em x6y6z6);
Transformaes geomtricas no espao
41
Transformaes em OpenGL
glMatrixMode(GL_MODELVIEW); /* transformaes do modelo */
glLoadIdentity( ); /* carrega a identidade como corrente */
desenhaBase( ); /* em xyz */
glTranslatef(0,d0,0.); /* translada em y */
glRotatef(angy0, 0.,1.,0.); /* roda em y */
glRotatef(angz0, 0.,0.,1.); /* roda em z */
desenhaOmbro( ); /* em x1y1z1 */
glTranslatef(0.,d1/2,0.); /* translada em y1 */
desenhaAnteBraco( ); /* em x2y2z2 */
glTranslatef(0.,d1/2,0.); /* translada em y2 */
glRotatef(angz1, 0.,0.,1.); /* roda em z2 */
desenhaCotovelo( ); /* em x3y3z3 */
glTranslatef(0.,d2/2,0.); /* translada em y3 */
desenhaBraco( ); /* em x4y4z4 */
glTranslatef(0.,d2/2,0.); /* translada em y4 */
glRotatef(rz5, 0.,0.,1.); /* roda em z4 */
desenhaPulso( ); /* em x5y5z5 */
glTranslatef(0.,d3,0.0); /* translada em y5 */
desenhaMao( ); /* em x6y6z6 */
Transformaes geomtricas no espao
42
Transformaes em OpenGL
Transformaes geomtricas no espao
43
Transformaes em OpenGL
Sistemas como o OpenGL utilizam o conceito de
matriz corrente.
Desta forma, apenas uma matriz responsvel por
realizar as transformaes geomtricas.
Esta matriz denominada matriz de modelagem e
visualizao (model view matrix).
Transformaes geomtricas no espao
44
Transformaes em OpenGL
Quando fornecemos uma nova matriz M, ela
multiplicada pela esquerda pela matriz corrente C.
Isto C
nova
= CM.
Geometricamente isto significa que a transformao
descrita por M ocorrer primeiro que a
transformao dada por C.
Isto bastante conveniente para o esquema de
interpretao do processo de instanciao baseado
em eixos locais.
Transformaes geomtricas no espao
45
Transformaes em OpenGL
Existem situaes em que o processo de instanciao
no descrito por uma seqncia de transformaes
com estrutura linear.
comum por exemplo, encontrarmos objetos que
so descritos por seqncias de transformao
estruturadas em forma de rvore.
Nestes casos definida uma hierarquia sobre o
conjunto de transformaes e partes do objeto que
especificam o modelo.
Transformaes geomtricas no espao
46
Transformaes em OpenGL
Nestes casos, ao trmino do percorrimento de um
dos ramos, necessrio recuperar a matriz do n
quando primeiro chegamos a ele.
Por exemplo, podemos definir os dedos direito e
esquerdo da mo de um rob a partir da base da mo.
Transformaes geomtricas no espao
47
Transformaes em OpenGL
Transformaes geomtricas no espao
48
Transformaes em OpenGL
Sistemas como o OpenGL implementam uma
estrutura de pilha para matrizes de transformao.
Desta forma, possvel percorrer a rvore saltando
e recuperando as matrizes dos ns pai atravs de
instrues pop e push.
Com o mecanismo de pilha, podemos garantir que
uma funo retorna sem alterar o estado corrente das
transformaes.
Transformaes geomtricas no espao
49
Transformaes em OpenGL
void desenhaDedos(float b,float c, float f, float f )
/* dedo esquerdo */

glPushMatrix(); /* Salva matriz corrente C0 */
glTranslatef((f+e)/2,(b+c)/2,0.); /* C=CTesq */
glScalef(e,c,e); /* C=CS */
glutSolidCube(1.0);
glPopMatrix(); /* Recupera da pilha C=C0 */
/* dedo direito */
glPushMatrix(); /* Salva matriz corrente C0 */
glTranslatef((f+e)/2,(b+c)/2,0.); /* C=CTdir */
glScalef(e,c,e); /* C=CS */
glutSolidCube(1.0);
glPopMatrix(); /* Recupera da pilha C=C0 */
}
Transformaes geomtricas no espao
50
Transformaes em OpenGL - exemplo
51
Contedo:
Professores:
Anselmo Montenegro
Esteban Clua
Aula 9
- Transformaes geomtricas no
espao

También podría gustarte