funções para serem usadas no exercício de lab

14
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

Upload: bardia

Post on 18-Jan-2016

27 views

Category:

Documents


0 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 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 •Um pequeno fovy é como olhar através de um telescópio•O aspecto é a largura/altura do plano de projeção

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

• 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.

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

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.

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

Objetos Pré-definidos no OpenGL• NOME: glutSolidCube, glutWireCube – renderiza um cubo sólido ou

wireframe

• SYNTAX void glutSolidCube(GLdouble size); void glutWireCube(GLdouble size);

• ARGUMENTS size largura do lado do cubo.

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

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);

• ARGUMENTS innerRadius -> raio interno; outerRadius -> raio externo; nsides -> número de lados para cada raio; rings -> número de aneis

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

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);

• ARGUMENTS innerRadius -> raio interno; outerRadius -> raio externo; nsides -> número de lados para cada raio; rings -> número de aneis

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

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.

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

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 }

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

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();}

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

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); }

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

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);}

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

Exercício 1 (continuação …)

void main (void){ Aqui é feita a programação padrão …}

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

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();

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

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()