A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Funções para serem usadas no exercício de Lab"— Transcrição da apresentação:

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); ARGUMENTS size 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); ARGUMENTS innerRadius -> 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); ARGUMENTS innerRadius -> 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 // 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()


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

Apresentações semelhantes


Anúncios Google