9
Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10) Visualização 3D Incluir no FrameWork Básico (na página da disciplina), as funções: // Função responsável por inicializar parâmetros e variáveis void WorkSpace(void) { // Notem que mudou sensivelmente o Menu, agora F1 também rotaciona (para incluir rotação a esquerda e direita) printf("\nAo Pressionar ‘m’ essas Instrucoes sempre serao Reapresentadas\n"); printf("\n\n"); printf("Instrucoes\n\n"); printf("Pressione o Botao Esquerdo, Arraste e Solte para Transladar\n\n"); printf("Tecle F1, F2 e F3 para rotacionar a direita, esquerda e em y \n\n"); printf("Tecle F4 e F5 para escalonar\n\n"); printf("Use o Botao Direito para Acessar o Menu\n\n"); glutInitWindowPosition(0,0); glutInitWindowSize(LarWindow, AltWindow); glutCreateWindow("Exercicio Lab CG Demo 3, 2010-I 10/03/2010"); glClearColor(1, 1, 1, 0);

Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10)

  • Upload
    thelma

  • View
    20

  • Download
    0

Embed Size (px)

DESCRIPTION

Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10). Visualização 3D Incluir no FrameWork Básico (na página da disciplina), as funções: // Função responsável por inicializar parâmetros e variáveis void WorkSpace(void) { - PowerPoint PPT Presentation

Citation preview

Page 1: Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10)

Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10)

Visualização 3DIncluir no FrameWork Básico (na página da disciplina), as funções:

// Função responsável por inicializar parâmetros e variáveis

void WorkSpace(void)

{

// Notem que mudou sensivelmente o Menu, agora F1 também rotaciona (para incluir rotação a esquerda e direita)

printf("\nAo Pressionar ‘m’ essas Instrucoes sempre serao Reapresentadas\n");

printf("\n\n");

printf("Instrucoes\n\n");

printf("Pressione o Botao Esquerdo, Arraste e Solte para Transladar\n\n");

printf("Tecle F1, F2 e F3 para rotacionar a direita, esquerda e em y \n\n");

printf("Tecle F4 e F5 para escalonar\n\n");

printf("Use o Botao Direito para Acessar o Menu\n\n");

glutInitWindowPosition(0,0);

glutInitWindowSize(LarWindow, AltWindow);

glutCreateWindow("Exercicio Lab CG Demo 3, 2010-I 10/03/2010");

glClearColor(1, 1, 1, 0);

Page 2: Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10)

Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10)

Continua ……

// Especifica as dimensões da Viewport

glViewport(0, 0, LarWindow, AltWindow);

GLfloat xMin = (GLfloat) -LarWindow/2.0; // largura minima

GLfloat xMax = (GLfloat) LarWindow/2.0; // largura maxima

GLfloat yMin = (GLfloat) -AltWindow/2.0; // largura minima

GLfloat yMax = (GLfloat) AltWindow/2.0; // largura maxima

gluOrtho2D (xMin, xMax, yMin, yMax);

glMatrixMode(GL_MODELVIEW);

//glMatrixMode(GL_PROJECTION);

glLoadIdentity();

//glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4, &ctrlpoints[0][0]);

//glEnable(GL_MAP1_VERTEX_3);

//gluLookAt(1,0,0,0,0,0,1,1,0);

}

Page 3: Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10)

Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10)

// Wireframe predefinido no OpenGL para incluir um TeaPot// Substitui o desenho de primitivas – Apenas para dar aulas

void DesenhaTeaPot(){ glColor3f(R,G,B); glutWireTeapot(0.5); }

Page 4: Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10)

Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10)

// Função callback de redesenho da janela de visualização

void Desenha(void)

{

// Limpa a janela de visualização com a cor branca

glClear(GL_COLOR_BUFFER_BIT);

if (triangulo)

DesenhaTriangulo();

if (quadrado)

DesenhaQuadrado();

if (poligono)

DesenhaPoligono();

if (teapot) /// Novidade!!! Agora desenha um TeaPot

DesenhaTeaPot();

//Executa os comandos OpenGL

glFlush();

//glutPostRedisplay();

}

Page 5: Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10)

Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10)

// Teclado para Teclas Especiais

void TecladoEspecial(int tecla, int x, int y)

{

switch(tecla)

{

case 'm':

printf("\nAo Pressionar 'm', essas Instrucoes sempre serao Reapresentadas\n");

printf("\n\n");

printf("Instrucoes\n\n");

printf("Pressione o Botao Esquerdo, Arraste e Solte para Transladar\n\n");

printf("Tecle F1, F2 e F3 para rotacionar\n\n");

printf("Tecle F4 e F5 para escalonar\n\n");

printf("Use o Botão Direito para Acessar o Menu\n\n");

break;

case GLUT_KEY_F1: // Rotaciona em X

rotX = 1;

glRotatef(2.0,rotX,0.0,0.0); /// Novidade!! Agora as variaveis de transformação são feitas aqui

rotX = 0; /// Fora,m incluidas rotX, rotY e rotZ Globais (Retirar as variaveis de transformacao)

glutPostRedisplay(); /// das funções de Desenho, como antes

break;

Page 6: Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10)

Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10)

Continua ,……

case GLUT_KEY_F2: // Rotaciona em Y

rotY = 1;

glRotatef(2.0,0.0,rotY,0.0);

rotY = 0;

glutPostRedisplay();

break;

case GLUT_KEY_F3: // Rotaciona em Z

rotZ = -1;

glRotatef(2.0,0.0,0.0,rotZ);

rotZ = 0;

glutPostRedisplay();

break;

case GLUT_KEY_F4: // Amplia

glScalef(1.1,1.1,1.1);

glutPostRedisplay();

break;

case GLUT_KEY_F5: // Reduz

glScalef(0.9,0.9,0.9);

glutPostRedisplay();

break;

case GLUT_KEY_INSERT:

printf("\nPressionada a Tecla INSERT\n");

break;

case GLUT_KEY_HOME:

printf("\nPressionada a Tecla HOME\n");

break;

}

}

Page 7: Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10)

Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10)

void MouseMotion(int botton, int state, int x, int y)

{

switch(botton)

{

case GLUT_LEFT_BUTTON:

switch(state)

{

case GLUT_DOWN:

//printf("botao esquerdo foi pressionado em (x,y) = (%d,%d)\n\n",x,y);

xini = x;

yini = y;

break;

case GLUT_UP:

GLfloat dx = (GLfloat)x - (GLfloat)xini; // Novidade!!! as variaveis de translação agora são atualizadas aqui

GLfloat dy = (GLfloat)yini - (GLfloat)y;

GLfloat dz = 0;

//if (teapot) dx = dx/1000; dy = dy/1000;

glTranslatef(dx/100.0,dy/100.0,0);

dx = 0.0; dy = 0.0;

xini = x; yini = y;

glutPostRedisplay();

break;

};

break;

case GLUT_RIGHT_BUTTON:

break;

}

}

Page 8: Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10)

Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10)

// Controle de Primitivas

int quadrado = 0,

triangulo = 0,

poligono = 0,

teapot = 1;

// Variáveis para controles de navegação

GLfloat angle, fAspect;

GLfloat rotX, rotY, rotZ;

// Inlcuir opção para Teapot no menu agora é com vocês!!!

Page 9: Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10)

Exercícios com Pontuação

1- [Nível Básico]: Faça um programa básico em OpenGL para desenhar um TeaPot em 3D.

2- [Nível Médio]: Usando como FrameWork básico o programa de transformações de primitivas básicas do exercício da aula passada, inclua o Teapot3D no sistema. Observe o Demo na página da disciplina.