1 / 14

Funções para serem usadas no exercício de Lab

Funções para serem usadas no exercício de Lab. Explicação mais Detalhada // Especifica a projeção perspectiva(angulo,aspecto,zMin,zMax) GLvoid gluPerspective( GLdouble fovy, GLdouble aspect, GLdouble nearClip, GLdouble farClip ). Um Grande fovy é como olhar através de uma lente grande

bardia
Download Presentation

Funções para serem usadas no exercício de Lab

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Funções para serem usadas no exercício de Lab Explicação mais Detalhada // Especifica a projeção perspectiva(angulo,aspecto,zMin,zMax) GLvoid gluPerspective( GLdouble fovy, GLdouble aspect, GLdouble nearClip, GLdouble farClip ) • Um Grande fovy é como olhar através de uma lente grande • Um pequeno fovy é como olhar através de um telescópio • O aspecto é a largura/altura do plano de projeção

  2. Nome gluLookAt — define a viewing transformation • Especificação em C • void gluLookAt ( GLdouble eyeX , GLdouble eyeY , GLdouble eyeZ , GLdouble centerX , GLdouble centerY , GLdouble centerZ , GLdouble upX , GLdouble upY , GLdouble upZ ); • Parametros • eyeX, eyeY, eyeZ especificam a posição do observador • CenterX, CenterY, CenterZ especificam a posição do alvo • upX, upY, upZ especificam a direção da câmera • Description • gluLookAt cria uma matriz de visualização a partir de um visualizador em um ponto, um ponto de referência indicando um alvo na cena e um vetor indicando para onde a câmera está apontada.

  3. Objetos Pré-definidos no OpenGL • Nome: glutSolidSphere, glutWireSphere – renderiza uma esfera sólida ou wireframe • SYNTAX: void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks); void glutWireSphere(GLdouble radius, GLint slices, GLint stacks); • ARGUMENTOS: radius -> raio da esfera; slices -> número de subdivisões em torno do eixo Z (similar a linhas de longiture); stacks -> númeero de subdivisões no eixo Z (similar a linhas de latitude). • DESCRIÇÃO: renderiza uma esfera no centro do sistema de coordenadas.

  4. Objetos Pré-definidos no OpenGL • NOME: glutSolidCube, glutWireCube – renderiza um cubo sólido ou wireframe • SYNTAX void glutSolidCube(GLdouble size); void glutWireCube(GLdouble size); • ARGUMENTSsize largura do lado do cubo.

  5. Objetos Pré-definidos no OpenGL • NOME: glutSolidTorus, glutWireTorus – renderiza um sólido ou wireframe em forma de torus; • SYNTAX void glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings); void glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings); • ARGUMENTSinnerRadius -> raio interno; outerRadius -> raio externo; nsides -> número de lados para cada raio; rings -> número de aneis

  6. Objetos Pré-definidos no OpenGL • NOME: glutSolidTorus, glutWireTorus – renderiza um sólido ou wireframe em forma de torus; • SYNTAX void glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings); void glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings); • ARGUMENTSinnerRadius -> raio interno; outerRadius -> raio externo; nsides -> número de lados para cada raio; rings -> número de aneis

  7. Escopo das Transformações • glPushMatrix (void): Função utilizada para empilhar a matriz de transformação corrente; • glPopMatrix (void): Função utilizada para desempilhar a matriz de transformação corrente.

  8. Exercício 1 • Fazer um programa em OpenGL usando as funções de Transformações de Escopo. O programa deve conter o seguinte (Veja o Demo Na página da Disciplina): …. void Desenha() { //limpa a janela de visualização com cor de fundo definida previamente glClear(GL_COLOR_BUFFER_BIT); // empilha a matriz de tranformação corrente // translada e rotaciona // desenha um Torus, Cubo ou qualquer outro Objeto Geométrico Pré-definido na OpenGL // Desempilha a Matriz de Tranformação Corrente }

  9. Desenha (continuação..) // empilha a matriz de tranformação corrente // translada e rotaciona // desenha um Torus, Cubo ou qualquer outro Objeto Geométrico Pré-definido na OpenGL // Desempilha a Matriz de Tranformação Corrente // empilha a matriz de tranformação corrente // translada e rotaciona // desenha um Torus, Cubo ou qualquer outro Objeto Geométrico Pré-definido na OpenGL // Desempilha a Matriz de Tranformação Corrente // executa os comando OpenGL glFlush(); }

  10. Exercício 1 • Fazer um programa em OpenGL usando as funções de Transformações de Escopo. O programa deve conter o seguinte: void EspecificaParametrosVisualizacao(void) { // especifica sistema de coordenadas de projeção // inicializa sistema de coordenadas de projeção // Espeficica a Projeção perspectiva gluPerspective(45,fAspect,0.5,500); // Especifica sistema de coordenadas do modelo // Iniciaiza sistema de coordenadas no modelo gluLookAt(0,60,150,0,0,0,0,1,0); }

  11. Exercício 1 (continuação …) void AlteraTamanhoJanela (Glsizei w, GLSizei h) { if (h == 0) h = 1; // Especifica as dimensoes da ViewPort glViewPort(0, 0, w, h); // Calcula a correção do aspecto fAspect = (GLfloat) w/ (GLfloat) h; // Chama a funcao para definir parâmetros de Visualização EspecificaParametrosVisualizacao(); } void Teclado(unsigned char key, int x, int y) { // permite encerrar o programa caso seja apertada a tecla ESC if (key == 27) exit(0); } void Inicializa(void) { // define a cor corrente como preta glClearColor(1.0f, 1.0f, 1.0f,1.0f); }

  12. Exercício 1 (continuação …) void main (void) { Aqui é feita a programação padrão … }

  13. Exercício 2 • Fazer um programa que dê a idéia de um Sistema Solar, só que com apenas 1 Sol e 1 Planeta pelo menos (Veja o Demo na Página da Disciplina): // Funções que devem ter Desenha() // Para desenhas os sistema solar usando funções de Escopo de Transformações glPushMatrix e glPopMatrix para cada objeto que desenhar. Lembre-se que o Sol e os Planetas podem ser desenhados com objetos pré-definidos glutSolidSphere No final da função deve chamar a função glutSwapBuffers();

  14. Exercício 2 void Reshape(int w, int h) { glViewPort(… glMatrixMode(… glLoadIdentity(… gluPerspective(60.0, (GLfloat) w/ (GLfloat) h, 1.0, 20.0); glMatrixMode(GL_MODEVIEW); glLoadIdentity(); gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); } KeyBoard() para rotacionar o planeta em torno do Sol e o Planeta em Torno dele mesmo Main()

More Related