Contedo:
Professores:
Anselmo MontenegroEsteban Clua
Aula 9
1
- Transformaes geomtricas no espao
ATENO: O professor menciona aula 8, mas na verdade o nmero correto 9.
Transformaes geomtricas no espao2
DADOSComputaoGrfica
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 espao3
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 espao4
Translaes e escalas
Transformaes geomtricas no espao5
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 espao6
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 espao7
Rotaes no eixo z
Transformaes geomtricas no espao8
Rotaes no eixo x
Transformaes geomtricas no espao9
Rotaes no eixo y
Transformaes geomtricas no espao10
Rotaes nos eixos cartesianos
Transformaes geomtricas no espao11
Matrizes de transformaoEm 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 espao12
Matrizes de transformao
A forma matricial homognea pode representar
a) Transformaes lineares.b) Translaesc) Transformaes afins.
Transformaes geomtricas no espao13
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 espao14
Tons de cinzaBorramentoDeteco 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 espao15
LAK 5519
Rotaes e orientaes
Transformaes geomtricas no espao16
ngulos de EulerJ 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 espao17
ngulos de Euler
Transformaes geomtricas no espao18
Modelos matemticos
Modelos fsicosEstruturas de dados e algoritmos.
Esquemas de representao.Universo
FsicoUniverso
MatemticoUniverso de
RepresentaoUniverso 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 espao19
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 espao20
EFICINCIAREALISMO
ngulos de Euler - Gimbal LockMesmo resultado obtido apenas com rotaes no eixo x e y.
Original
Transformaes geomtricas no espao21
ngulos de Euler
Apesar de especificarmos 2 parmetros s temos 1 grau de liberdade
Transformaes geomtricas no espao22
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 espao23
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 espao24
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 espao25
Transformaes em OpenGLTranslao
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 espao26
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 espao27
Transformaes em OpenGL
Considere o plano com equao
Se incluirmos a matriz identidade I = M-1M no alteramos a equao abaixo:
Transformaes geomtricas no espao28
XlibGKSMotifQuickDrawPHIGSRenderWareHOOPSToolBookIUP/luaCanvasDrawDelphiVisualBasicJavaDirectXC / C++GLUTOpenGLC &OpenGL(c/ GLUT)
Transformaes em OpenGL
A equao do plano transformado n.p=0
Logo, temos que a normal transformada
Transformaes geomtricas no espao29
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 espao30
Transformaes em OpenGL
Transformaes geomtricas no espao31
Transformaes em OpenGL
Transformaes geomtricas no espao32
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 espao33
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 espao34
Transformaes em OpenGL
Transformaes geomtricas no espao35
Transformaes em OpenGL
Transformaes geomtricas no espao36
Transformaes em OpenGL
Transformaes geomtricas no espao37
Transformaes em OpenGL
Transformaes geomtricas no espao38
Transformaes em OpenGL
Transformaes geomtricas no espao39
Transformaes em OpenGL
Transformaes geomtricas no espao40
Transformaes em OpenGLDesenha 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 z2Desenha 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 y5Desenha a mo (em x6y6z6);
Transformaes geomtricas no espao41
Transformaes em OpenGLglMatrixMode(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 espao42
Transformaes em OpenGL
Transformaes geomtricas no espao43
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 espao44
Transformaes em OpenGL
Quando fornecemos uma nova matriz M, ela multiplicada pela esquerda pela matriz corrente C. Isto Cnova = 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 espao45
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 espao46
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 espao47
Transformaes em OpenGL
Transformaes geomtricas no espao48
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 espao49
Transformaes em OpenGLvoid 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 espao50
Transformaes em OpenGL - exemplo
51
Contedo:
Professores:
Anselmo MontenegroEsteban Clua
Aula 9
- Transformaes geomtricas no espao
Top Related