Upload
doannhu
View
215
Download
0
Embed Size (px)
Citation preview
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
COMPUTAÇÃO GRÁFICARasterização e Preenchimento de Regiões
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Objetivos
•• Conhecer os fundamentos da Conhecer os fundamentos daconstrução de linhas e círculosconstrução de linhas e círculos•• Conhecer o modeloConhecer o modelo scan-line scan-line eemodelo de sementes paramodelo de sementes parapreenchimento de polígonospreenchimento de polígonos
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Rasterização
O processo que determina quaisO processo que determina quais pixels pixelsproduzem a melhor aproximação para aproduzem a melhor aproximação para arepresentação de uma linha é denominadorepresentação de uma linha é denominadodede rasterizaçãorasterização..
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Rasterização
•• A escolha é óbvia para linhas A escolha é óbvia para linhasverticais, horizontais e linhas a 45ºverticais, horizontais e linhas a 45º
Linhas Verticais, Horizontais e a 45Linhas Verticais, Horizontais e a 45oo
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Rasterização
•• Para linhas com outras angulaPara linhas com outras angulaçõesções……
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Rasterização
Características Características
•• Linhas retas devem parecer retas Linhas retas devem parecer retas
•• Brilho constante ao longo da linha Brilho constante ao longo da linha
•• Eficiência na construção Eficiência na construção
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Algoritmo de Bresenham - Retas
•• Fundamentos Fundamentos
(0,0)
(0,1) (1,1)
(1,0)
1/2 ≤ Δy / Δx ≤ 1 (erro ≥ 0)Plot(1,1)
0 ≤ Δy / Δx < 1 (erro < 0)Plot(1,0)
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Algoritmo de Bresenham - Retas
•• Análise do erro Análise do erro
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Algoritmo de Bresenham - Retas
•• Análise do erro Análise do erro
0
0
1 2 3
1
0.5
-0.5
0
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
BresenhamBresenham - construção de linhas cujos pontos inicial e final são (x- construção de linhas cujos pontos inicial e final são (x11,y,y11) e) e(x(x22,y,y22), respectivamente), respectivamente
x = xx = x11
y = yy = y11ΔΔxx = x = x22 - x - x11
ΔΔyy = y = y22 - y - y11
e = m - 1/2e = m - 1/2
PARAPARA i = 1 i = 1 ATÉATÉ ΔΔx x FAÇAFAÇA % início do laço principal % início do laço principal
PlotarPixelXYPlotarPixelXY(x, y)(x, y)ENQUANTOENQUANTO (e > 0) (e > 0) FAÇAFAÇA y = y + 1 y = y + 1 e = e - 1 e = e - 1FIM ENQUANTOFIM ENQUANTOx = x + 1x = x + 1e = e + me = e + m
FIM PARAFIM PARAFIM ALGORITMOFIM ALGORITMO
m = m = ΔΔy / y / ΔΔxx
Obs.: algoritmo válido para 0 Obs.: algoritmo válido para 0 ≤≤ ΔΔy y ≤≤ ΔΔxx
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Algoritmo de Bresenham - Retas•• Exemplo: Construir uma linha cujas Exemplo: Construir uma linha cujasextremidades são (0,0) e (5,5) usando oextremidades são (0,0) e (5,5) usando o alg alg..BresenhamBresenham i setpixel e x y
1/2 0 01 (0, 0)
2 (1, 1)
3 (2, 2)
4 (3, 3)
5 (4, 4)
-1/2 0 1
-1/2 1 2
1/2 1 1
1/2 2 2
-1/2 2 3 1/2 3 3
-1/2 3 4 1/2 4 4
-1/2 4 5 1/2 5 5
Δx = 5
x = 0y = 0
Δy = 5
m = 1e = 1/2
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Algoritmo de Bresenham - Retas
00 1 2 3 4 5
12345
•• Desenho da linha - (0,0) e (5,5). Desenho da linha - (0,0) e (5,5).
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Algoritmo de Bresenham
Algoritmo genérico - retasAlgoritmo genérico - retas
Algoritmo para construção de círculosAlgoritmo para construção de círculos
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Algoritmo de Bresenham - Círculos
•• Eficiente Eficiente•• Somente um Somente um octante octante do cdo círculo é gerado:írculo é gerado:as outras partes são obtidas por sucessivasas outras partes são obtidas por sucessivasreflexõesreflexões
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Algoritmo de Bresenham - Círculos•• Suponha que o círculo será gerado no sentido Suponha que o círculo será gerado no sentidohorário. Portanto, para qualquer pontohorário. Portanto, para qualquer pontopertencente ao círculo, existirá 3 possibilidadespertencente ao círculo, existirá 3 possibilidadesde movimento para o de movimento para o pixel pixel seguinte:seguinte:
Horizontalmente à direita; Horizontalmente à direita; Diagonalmente para Diagonalmente parabaixo à direita; baixo à direita; Verticalmente para baixo Verticalmente para baixo
•• O algoritmo escolhe o O algoritmo escolhe o pixel pixel que minimiza umaque minimiza umamedida de distância entre estes movimentos emedida de distância entre estes movimentos eaqueles produzidos por um aqueles produzidos por um ““círculo realcírculo real””..
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Exercício•• (prova - 2004) (prova - 2004) Deseja-seDeseja-sedesenhar uma letra desenhar uma letra VVusando os Algoritmos usando os Algoritmos dedeBresenham e/ou Bresenham e/ou DDA (DDA (vejavejaFigura ao ladoFigura ao lado).).
ComoComo você resolveria esse problema você resolveria esse problema? (? (pensepenseem umaem uma forma forma eficiente eficiente)) Faça Faça as asconsiderações que forem necessáriasconsiderações que forem necessárias..ApresenteApresente o o acompanhamento acompanhamento dos dos algoritmos algoritmosparapara a a construção da construção da(s)(s) reta reta(s).(s).
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Para saber mais:
[ROGERS98] Capítulo 2
[FOLEY95] Capítulo 3
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Preenchimento - Fundamentos
•• Contornos fechados podem ser vistos Contornos fechados podem ser vistoscomo polígonos.como polígonos.•• O método mais simples para se preencher O método mais simples para se preencherpolígonos é o de varrer cadapolígonos é o de varrer cada pixel pixel da imagemda imageme verificar se ele está dentro do polígono.e verificar se ele está dentro do polígono.
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Fundamentos
•• Para melhorar a eficiência da Para melhorar a eficiência davarredura, utiliza-se um varredura, utiliza-se um ““bounding boxbounding box””..
•• Bounding box Bounding box é o menor retângulo que é o menor retângulo quecontém o polígono.contém o polígono.
bounding boxbounding box bounding boxbounding box
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Varredura por linha
•• É provável que É provável que pixels pixels adjacentes em umaadjacentes em umalinha de varredura tenham as mesmaslinha de varredura tenham as mesmascaracterísticas (mudam quando a linha decaracterísticas (mudam quando a linha devarredura corta a borda de um polígono).varredura corta a borda de um polígono).
•• Também conhecido como Também conhecido como scan-linescan-line
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Varredura por linha
P1 P2
P3
P4
P5
2
4
0
Scan line 4
Scan line 2
6
2 4 6 8 10
x < 1 x < 1 →→ fora do polígono fora do polígono1 1 ≤≤ x x ≤≤ 8 8 →→ dentro do polígono dentro do polígonox > 8 x > 8 →→ fora do polígono fora do polígono
x < 1 x < 1 →→ fora do polígono fora do polígono1 1 ≤≤ x x ≤≤ 4 4 →→ dentro do polígono dentro do polígono4 < x < 6 4 < x < 6 →→ fora do polígono fora do polígono6 6 ≤≤ x x ≤≤ 8 8 →→ dentro do polígono dentro do polígonox > 8 x > 8 →→ fora do polígono fora do polígono
SCAN LINE 2SCAN LINE 2
SCAN LINE 4SCAN LINE 4
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Varredura por linha•• Dificuldade: intersecção de uma linha Dificuldade: intersecção de uma linhade varredura com um vértice dode varredura com um vértice dopolígonopolígono
P1
P2
P3
P4
Scan line 10
Scan line 5
Scan line 4
Scan line 1
•• Um resultado Um resultadocorreto é obtidocorreto é obtidoquando se conta duasquando se conta duasintersecções quando aintersecções quando ascan linescan line cruza com cruza comum máximo ou mínimoum máximo ou mínimolocal (P3 e P1,local (P3 e P1,respectivamente).respectivamente).
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Preenchimento por semente - PPS
•• Assume que pelo menos um ponto no interior Assume que pelo menos um ponto no interiordo polígono é conhecido.do polígono é conhecido.•• Regiões podem ser definidas no interior do Regiões podem ser definidas no interior dopolígono ou em seu contorno.polígono ou em seu contorno.
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Preenchimento por semente
•• É importante definir a relação de vizinhança É importante definir a relação de vizinhançaentreentre pixelspixels, 4 ou 8-conectada., 4 ou 8-conectada.
VIZINHANÇA 4-CONECTADAVIZINHANÇA 4-CONECTADA
p
VIZINHANÇA 8-CONECTADAVIZINHANÇA 8-CONECTADA
p
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
ALGORITMO PPS SIMPLES - USA PILHA FILOALGORITMO PPS SIMPLES - USA PILHA FILO - Efetua o preenchimento de - Efetua o preenchimento deregiões partindo de um ponto interno conhecido denominado de sementeregiões partindo de um ponto interno conhecido denominado de semente
Coloque um Coloque um pixel pixel qualquer, denotado por semente qualquer, denotado por semente (s),(s), na pilha na pilha
ENQUANTOENQUANTO pilha pilha ≠≠ vazio vazio FAÇAFAÇA
-Retire um-Retire um pixel pixel pp da pilha da pilha-Atribua o valor da cor de preenchimento ao-Atribua o valor da cor de preenchimento ao pixel pixel pp
-Para cada-Para cada pixel pixel adjacente a adjacente a pp, observe o seu, observe o seustatus. Caso seja umstatus. Caso seja um pixel pixel de contorno ou jáde contorno ou játenha sido visitado, ignore-os. Caso contrário,tenha sido visitado, ignore-os. Caso contrário,coloque-os na pilha.coloque-os na pilha.
FIM ENQUANTOFIM ENQUANTO
FIM ALGORITMOFIM ALGORITMO
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Preenchimento por semente
s s
s s
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Preenchimento por semente•• Exercício: verificar a ordem de Exercício: verificar a ordem depreenchimento dospreenchimento dos pixels pixels pertencentes à região pertencentes à regiãodelimitada pelo contorno abaixo. Faça duasdelimitada pelo contorno abaixo. Faça duasimplementações para vizinhanças 4 e 8.implementações para vizinhanças 4 e 8.Comente os resultados.Comente os resultados.
s
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Aliasing•• Efeito gerado pela Efeito gerado pela subamostragem subamostragem de sinais (imagem).de sinais (imagem).
Halftoning•• Técnica que utiliza uma baixa quantidade de níveis de Técnica que utiliza uma baixa quantidade de níveis decinza a fim de obter uma imagem de boa resolução visual.cinza a fim de obter uma imagem de boa resolução visual.
MARCO ANTONIO GARCIA DE CARVALHOFevereiro de 2009
Computação Gráfica
Primitivas - OpenGL•• Vértices definidos por um bloco Vértices definidos por um bloco
glBeginglBegin(GL_ POLYGON);(GL_ POLYGON);
glVertex2f(0.0,0.0); glVertex2f(0.0,0.0);
glVertex2f(0.0,3.0); glVertex2f(0.0,3.0);
glVertex2f(3.0,3.0); glVertex2f(3.0,3.0);
glVertex2f(4.0,1.5); glVertex2f(4.0,1.5);
glVertex2f(3.0, 0.0); glVertex2f(3.0, 0.0);
glEndglEnd();();
•• As faces de um pol As faces de um polígono ígono possuem possuem ““frentefrente”” e e ““versoverso””