Upload
doque
View
218
Download
0
Embed Size (px)
Citation preview
Introdução a OpenGLaula 4
Profª. Alessandra Martins Coelho
março/ 2013
GL_QUAD_STRIP glBegin(GL_QUAD_STRIP); glColor3f (0.0, 1.0, 1.0); glVertex3f(10,90,0); glVertex3f(10,25,0); glColor3f (0.0, 0.5, 1.0); glVertex3f(30,92,0); glVertex3f(30,10,0); glColor3f (0.0, 0.8, 1.0); glVertex3f(60,85,0); glVertex3f(60,25,0); glColor3f (0.0, 0.0, 1.0); glVertex3f(90,90,0); glVertex3f(85,25,0); glEnd();
• GL_POLYGON – Polígono convexo simples.
• V0v1...vn-1
GL_POLYGON
glBegin(GL_POLYGON); glVertex3f(20,20,0); glVertex3f(50,20,0); glVertex3f(80,50,0); glVertex3f(80,80,0); glVertex3f(20,80,0);
glEnd();
Exercício 2Aproximação de objetos curvos.Use GL_LINE_LOOP e faça uma circunferência.
0 <= t<= 2PI
Coordenadas do desenho
Coordenadas do desenho
Clipping de coordenadas• O sistema de coordenadas pode ser infinito, mas
nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar o desenho, podemos dizer ao
OpenGL como mapear os pares coordenados em unidades da tela, os pixels.
• gluOrtho2D(esquerda, direita,inferior, superior)• Essa função aceita quatro parâmetros, que
definem a coordenada máxima e mínima que cada eixo ocupará na área de desenho.
Clipping de coordenadas• A área onde o mapeamento é feito é
chamada de clipping area, na tradução literal “área de recorte”.
• Isso porque mostramos ao OpenGL que parte do eixo cartesiano deve ser “recortada” para ser mostrada na janela.
Coordenadas Cartesianas 2D
Exemplos
Exemplo de uso dos 4 quadrantes
Coordenadas cartesianas 3D• como podemos “espremer” três
dimensões em apenas duas? Através de projeções, calculadas com base em trigonometria e matrizes. O OpenGL trabalha com duas formas diferentes de projeção.
• Projeção ortográfica• Projeção em perspectiva
Projeção ortográfica• glOrtho(left, right, bottom, top, near, far
).
A funçao gluOrtho2D, vista no tópico anterior, simplesmente fornece os valores -1 e 1 para near e far.
glutInitWindowSize(500, 500); glutInitWindowSize(500, 250);
E se a caixa de visualização tivesse seus eixos com 1 cm?
glutInitWindowSize(500, 500);
E se a caixa de visualização tivesse seus eixos com 1 cm?
GL_LINE_STIPPLE // Exemplos de linhas glEnable(GL_LINE_STIPPLE); glColor3f(0.0,1.0,0.0); //verde glLineStipple (1, 0x0101); /* dotted */ drawOneLine (-0.1, 1, -1, 1); glLineStipple (1, 0x00FF); /* dashed */ drawOneLine (-0.1, 0.9, -1, 0.9); glLineStipple (1, 0x1C47); /* dash/dot/dash */ drawOneLine (-0.1, 0.8, -1, 0.8); glColor3f(1.0,1.0,0.0); //amarelo glLineWidth (5.0); glLineStipple (1, 0x0101); /* dotted */ drawOneLine (-0.1, 0.7, -1, 0.7); glLineStipple (1, 0x00FF); /* dashed */ drawOneLine (-0.1, 0.6, -1, 0.6); glLineStipple (1, 0x1C47); /* dash/dot/dash */ drawOneLine (-0.1, 0.5, -1, 0.5); glLineWidth (1.0); glDisable(GL_LINE_STIPPLE);
Exercício 3• Use os conceitos
de primitivas e de ortho, crie figuras para os quatro quadrantes do plano cartesiano R², conforme exemplo apresentado ao lado.
Exercício 4
Exercício 5• Fazer o gráfico de sen(x),
no intervalo -10 a 10.• Fazer o gráfico de 3x²
+5x -6, no intervalo -10 a 10.