2
Linguagens de Programação
UFGD
15
Linguagens de Programação
UFGD
1
Linguagens de Programação
UFGD
1
Linguagens de Programação
UFGD
1
Linguagens de Programação
UFGD
7
Linguagens de Programação
UFGD
2
Linguagens de Programação
UFGD
2
Linguagens de Programação
UFGD
1
Linguagens de Programação
UFGD
2
Linguagens de Programação
UFGD
Texto de pré-visualização
1 Considerando o programa Boneco de Neve Pedese a Determine a matriz da transformação de coordenadas do Sistema de Referência do Objeto para o Sistema de Referência da Câmera b Determine a Matriz de Projeção c Determine as coordenadas do objeto DesenhaQuadrado no Sistema de Referência da Câmera ver o objeto a partir da câmera Código 3 include stdlibh 4 include mathh 5 include stdioh 7 include GLgluth 10 define ESC 27 11 13 void TamanhoJanelaint w int h 15 float ratio float w float h razão de aspecto 16 glMatrixModeGLPROJECTION Matriz de projeção 17 glLoadIdentity inicializa matriz de projeção com a matriz identidade 18 gluPerspective450 ratio 01 1000 Transformação Perspectiva 19 glMatrixModeGLMODELVIEW Seleciona Matriz corrente como Model View 20 glViewport0 0 w h Define view port na janela de interação 21 22 void DesenhaQuadrado 24 glBeginGLLINELOOP 25 glVertex3f10 10 00 26 glVertex3f10 10 00 27 glVertex3f 10 10 00 28 glVertex3f 10 10 00 29 glEnd 30 31 32 void DesenhaBoneco 34 Corpo esfera de raio 075 20 por 20 35 glColor3f10 10 10 Cor Branca 36 glPushMatrix 37 glTranslatef00 00 075 38 glutSolidSphere075 20 20 39 glPopMatrix 40 41 Cabeça esfera de raio 025 20 por 20 42 glPushMatrix 43 glTranslatef00 00 175 posição da cabeça 075 075 corpo 025 raio cabeça 44 glutSolidSphere025 20 20 45 47 Olhos esfera de raio 005 10 por 10 48 glColor3f00 00 00 cor preta 49 glPushMatrix 50 glTranslatef00 018 010 posição final dos olhos 51 glPushMatrix 52 glTranslatef005 00 00 53 glutSolidSphere005 10 10 olho direito 54 glPopMatrix 55 glPushMatrix 56 glTranslatef005 00 00 57 glutSolidSphere005 10 10 olho esquerdo 58 glRotated30100 59 glTranslatef005 018 015 60 glColor3f10 05 05 61 DesenhaQuadrado 62 glPopMatrix 63 glPopMatrix 64 65 Nariz 66 glColor3f10 05 05 cor laranja 67 glPushMatrix 68 glRotatef900 10 00 00 rotação com final apontando para y 69 glutSolidCone008 05 10 2 Cone basealtura 10 por 2 70 glPopMatrix 71 glPopMatrix 73 74 76 void DesenhaCenavoid 77 78 int i j 79 80 glClearColor00 07 10 10 limpa a janela de iteração com a cor azul 81 glClearGLCOLORBUFFERBIT GLDEPTHBUFFERBIT 82 83 glLoadIdentity 84 85 Configuração da câmera 86 posição direção da cena orientação up 87 gluLookAt05010 04010000010 88 89 Piso quadrado 200 por 200 90 glColor3f00 07 00 91 glBeginGLQUADS 92 glVertex3f1000 1000 00 93 glVertex3f1000 1000 00 94 glVertex3f 1000 1000 00 95 glVertex3f 1000 1000 00 96 glEnd 97 98 DesenhaBoneco 99 glutSwapBuffers 100 101 103 void Teclasunsigned char key int kx int ky 105 if key ESC key q key Q exit0 106 107 112 int mainint argc char argv 121 Inicialização 122 glutInitargc argv 123 glutInitDisplayModeGLUTDEPTH GLUTDOUBLE GLUTRGBA 124 glutInitWindowPosition100 100 125 glutInitWindowSize800 400 126 glutCreateWindow Boneco de Neve 128 glutReshapeFuncTamanhoJanela 129 glutDisplayFuncDesenhaCena 130 glutKeyboardFuncTeclas 132 glutMainLoop 133 return 0 134 Transformacoes em OpenGL 1 Matriz da Transformacao de Coordenadas do Sistema de Referˆencia do Objeto para o Sis tema de Referˆencia da Cˆamera A funcao gluLookAt05010 04010000010 define a posicao e orientacao da cˆamera A matriz de transformacao de visao T pode ser expressa como T rx ux fx tx ry uy fy ty rz uz fz tz 0 0 0 1 onde rx ry rz ux uy uz e fx fy fz sao os vetores de direcao direita para cima e para a frente da cˆamera respectivamente tx ty tz e o vetor de translacao que e basicamente a posicao da cˆamera negada e entao transformada para a base da cˆamera 2 Matriz de Projecao A matriz de projecao perspectiva e definida pela funcao gluPerspective450 ratio 01 1000 A matriz resultante P e P 1 tan θ 2 ratio 0 0 0 0 1 tan θ 2 0 0 0 0 fn fn 2fn fn 0 0 1 0 onde θ 450 graus f 1000 n 01 e ratio e a razao de aspecto 3 Coordenadas do objeto DesenhaQuadrado no Sis tema de Referˆencia da Cˆamera Para encontrar as coordenadas do quadrado no sistema de referˆencia da cˆamera multiplicamos cada ponto do quadrado pela matriz T da transformacao de visao 1 e entao pela matriz P da projecao se desejarmos transformalos para o espaco de projecao Para um ponto x y z a nova coordenada P e P T P Este processo deve ser repetido para todos os 4 pontos do quadrado 2
2
Linguagens de Programação
UFGD
15
Linguagens de Programação
UFGD
1
Linguagens de Programação
UFGD
1
Linguagens de Programação
UFGD
1
Linguagens de Programação
UFGD
7
Linguagens de Programação
UFGD
2
Linguagens de Programação
UFGD
2
Linguagens de Programação
UFGD
1
Linguagens de Programação
UFGD
2
Linguagens de Programação
UFGD
Texto de pré-visualização
1 Considerando o programa Boneco de Neve Pedese a Determine a matriz da transformação de coordenadas do Sistema de Referência do Objeto para o Sistema de Referência da Câmera b Determine a Matriz de Projeção c Determine as coordenadas do objeto DesenhaQuadrado no Sistema de Referência da Câmera ver o objeto a partir da câmera Código 3 include stdlibh 4 include mathh 5 include stdioh 7 include GLgluth 10 define ESC 27 11 13 void TamanhoJanelaint w int h 15 float ratio float w float h razão de aspecto 16 glMatrixModeGLPROJECTION Matriz de projeção 17 glLoadIdentity inicializa matriz de projeção com a matriz identidade 18 gluPerspective450 ratio 01 1000 Transformação Perspectiva 19 glMatrixModeGLMODELVIEW Seleciona Matriz corrente como Model View 20 glViewport0 0 w h Define view port na janela de interação 21 22 void DesenhaQuadrado 24 glBeginGLLINELOOP 25 glVertex3f10 10 00 26 glVertex3f10 10 00 27 glVertex3f 10 10 00 28 glVertex3f 10 10 00 29 glEnd 30 31 32 void DesenhaBoneco 34 Corpo esfera de raio 075 20 por 20 35 glColor3f10 10 10 Cor Branca 36 glPushMatrix 37 glTranslatef00 00 075 38 glutSolidSphere075 20 20 39 glPopMatrix 40 41 Cabeça esfera de raio 025 20 por 20 42 glPushMatrix 43 glTranslatef00 00 175 posição da cabeça 075 075 corpo 025 raio cabeça 44 glutSolidSphere025 20 20 45 47 Olhos esfera de raio 005 10 por 10 48 glColor3f00 00 00 cor preta 49 glPushMatrix 50 glTranslatef00 018 010 posição final dos olhos 51 glPushMatrix 52 glTranslatef005 00 00 53 glutSolidSphere005 10 10 olho direito 54 glPopMatrix 55 glPushMatrix 56 glTranslatef005 00 00 57 glutSolidSphere005 10 10 olho esquerdo 58 glRotated30100 59 glTranslatef005 018 015 60 glColor3f10 05 05 61 DesenhaQuadrado 62 glPopMatrix 63 glPopMatrix 64 65 Nariz 66 glColor3f10 05 05 cor laranja 67 glPushMatrix 68 glRotatef900 10 00 00 rotação com final apontando para y 69 glutSolidCone008 05 10 2 Cone basealtura 10 por 2 70 glPopMatrix 71 glPopMatrix 73 74 76 void DesenhaCenavoid 77 78 int i j 79 80 glClearColor00 07 10 10 limpa a janela de iteração com a cor azul 81 glClearGLCOLORBUFFERBIT GLDEPTHBUFFERBIT 82 83 glLoadIdentity 84 85 Configuração da câmera 86 posição direção da cena orientação up 87 gluLookAt05010 04010000010 88 89 Piso quadrado 200 por 200 90 glColor3f00 07 00 91 glBeginGLQUADS 92 glVertex3f1000 1000 00 93 glVertex3f1000 1000 00 94 glVertex3f 1000 1000 00 95 glVertex3f 1000 1000 00 96 glEnd 97 98 DesenhaBoneco 99 glutSwapBuffers 100 101 103 void Teclasunsigned char key int kx int ky 105 if key ESC key q key Q exit0 106 107 112 int mainint argc char argv 121 Inicialização 122 glutInitargc argv 123 glutInitDisplayModeGLUTDEPTH GLUTDOUBLE GLUTRGBA 124 glutInitWindowPosition100 100 125 glutInitWindowSize800 400 126 glutCreateWindow Boneco de Neve 128 glutReshapeFuncTamanhoJanela 129 glutDisplayFuncDesenhaCena 130 glutKeyboardFuncTeclas 132 glutMainLoop 133 return 0 134 Transformacoes em OpenGL 1 Matriz da Transformacao de Coordenadas do Sistema de Referˆencia do Objeto para o Sis tema de Referˆencia da Cˆamera A funcao gluLookAt05010 04010000010 define a posicao e orientacao da cˆamera A matriz de transformacao de visao T pode ser expressa como T rx ux fx tx ry uy fy ty rz uz fz tz 0 0 0 1 onde rx ry rz ux uy uz e fx fy fz sao os vetores de direcao direita para cima e para a frente da cˆamera respectivamente tx ty tz e o vetor de translacao que e basicamente a posicao da cˆamera negada e entao transformada para a base da cˆamera 2 Matriz de Projecao A matriz de projecao perspectiva e definida pela funcao gluPerspective450 ratio 01 1000 A matriz resultante P e P 1 tan θ 2 ratio 0 0 0 0 1 tan θ 2 0 0 0 0 fn fn 2fn fn 0 0 1 0 onde θ 450 graus f 1000 n 01 e ratio e a razao de aspecto 3 Coordenadas do objeto DesenhaQuadrado no Sis tema de Referˆencia da Cˆamera Para encontrar as coordenadas do quadrado no sistema de referˆencia da cˆamera multiplicamos cada ponto do quadrado pela matriz T da transformacao de visao 1 e entao pela matriz P da projecao se desejarmos transformalos para o espaco de projecao Para um ponto x y z a nova coordenada P e P T P Este processo deve ser repetido para todos os 4 pontos do quadrado 2