22
Introdução a OpenGL aula 4 Profª. Alessandra Martins Coelho março/ 2013

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

  • Upload
    doque

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

• 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.