![Page 1: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/1.jpg)
Introdução a OpenGLaula 4
Profª. Alessandra Martins Coelho
março/ 2013
![Page 2: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/2.jpg)
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();
![Page 3: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/3.jpg)
• GL_POLYGON – Polígono convexo simples.
• V0v1...vn-1
![Page 4: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/4.jpg)
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();
![Page 5: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/5.jpg)
Exercício 2Aproximação de objetos curvos.Use GL_LINE_LOOP e faça uma circunferência.
0 <= t<= 2PI
![Page 6: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/6.jpg)
Coordenadas do desenho
![Page 7: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/7.jpg)
Coordenadas do desenho
![Page 8: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/8.jpg)
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.
![Page 9: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/9.jpg)
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.
![Page 10: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/10.jpg)
Coordenadas Cartesianas 2D
![Page 11: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/11.jpg)
Exemplos
![Page 12: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/12.jpg)
Exemplo de uso dos 4 quadrantes
![Page 13: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/13.jpg)
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
![Page 14: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/14.jpg)
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.
![Page 15: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/15.jpg)
![Page 16: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/16.jpg)
glutInitWindowSize(500, 500); glutInitWindowSize(500, 250);
![Page 17: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/17.jpg)
E se a caixa de visualização tivesse seus eixos com 1 cm?
![Page 18: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/18.jpg)
glutInitWindowSize(500, 500);
E se a caixa de visualização tivesse seus eixos com 1 cm?
![Page 19: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/19.jpg)
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);
![Page 20: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/20.jpg)
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.
![Page 21: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/21.jpg)
Exercício 4
![Page 22: Introdução a OpenGL · Clipping de coordenadas • O sistema de coordenadas pode ser infinito, mas nossos monitores não são. • Monitores - medida fixa. • Antes de iniciar](https://reader031.vdocuments.net/reader031/viewer/2022022714/5c0ce50809d3f252498cd66d/html5/thumbnails/22.jpg)
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.