Preenchimento de polígonos.

Propaganda
Preenchimento de polígonos
& recorte de linhas
Prof. MSc. João Ricardo Bittencourt
Update: 09 Out. 2007
[email protected]
Processamento Gráfico
Desenvolvimento de Jogos &
Entretenimento Digital
UNISINOS
Sumário
1.
2.
Preenchimento de polígonos
 Boundary Fill
 Flood Fill
 Scan line
Recorte
 Recorte de pontos
 Recorte de linhas
•Algoritmo de Cohen-Sutherland
Preenchimento de
Polígonos

Dado um polígono qualquer como este deve ser
preenchido?

Quais os pixels deverão ser coloridos?
Preenchimento de
Polígonos

Problemas
 Algoritmos caros computacionalmente
 Compartilhamento da mesma aresta
• Perde de tempo no preenchimento
 Só pintar os pontos que estão dentro do
polígono
• E como fica quem está na borda?
 Evitar repinturas
Boundary Fill

Algoritmo
 Define uma semente no interior da figura
 Procura na esquerda e na direita
 Quando os pixels da esquerda e da direita são
atingindos, pinta uma linha
 Depois tenta na linha de cima e depois na
linha de baixo
 Até todos os pontos estarem preenchidos
Flood Fill

Algoritmo
 Define uma semente no interior da figura
 Procura na esquerda e na direita
 Inspeciona todos os pixels adjacentes até toda
a área ao redor do pixel estiver preenchida
 Até todos os pontos estarem preenchidos
Vídeo
Scan line
ymax
ymin
Scan line

Algoritmo
 Define ymax e ymin
 Para cada aresta calcula as intersecções
 Ordena as intersecções em relação a x
 Desenha as linhas horizontais
Vídeo
Recorte de Pontos

Trivial de ser resolvido

Pinta somente os pontos que estão dentro da
área

Dado P(x,y) ele será cortado se:
 Xi >= x >=Xf
 Yi >= y >=Yf
Recorte de Linhas

Caso 1 – Trivialmente Aceito
 Os dois pontos estão dentro da área
Recorte de Linhas

Caso 2 – Trivialmente Rejeitado
 Os dois pontos estão fora da área
Recorte de Linhas

Caso 3 – Necessita recorte
Recorte de Linhas

Caso 3 – Necessita recorte
Acima Abaixo Direita Esquerda
1001
1000
1010
0001
0000
0010
0101
0100
0110
Algoritmo de Cohen-Sutherland
Recorte de Linhas

1001 AND
1010
1000 !=0
Rejeita
Caso 3 – Necessita recorte
1001
A
1000
1010
0001
0000
0010
0101
0100
0110
B
Algoritmo de Cohen-Sutherland
Recorte de Linhas

Caso 3 – Necessita recorte
1001
1000
1010
0000
0010
0000 OR
0000
0000 ==0
Aceita
A
0001
B
0101
0100
0110
Algoritmo de Cohen-Sutherland
Recorte de Linhas

Caso 3 – Necessita recorte
1001
1000
A
0001
0000
0010
0101
0100
0110
B
1010
1000 AND
0100
0000 !=0
Tem que
cortar
Algoritmo de Cohen-Sutherland
Links

Applets de Demonstração (Veja na web)
 Boundary Fill
• http://www.algana.co.uk/Algorithms/Graphics/BoundaryFill/BoundaryFill.html

Active Edge List (variação do Scan Line)
• http://www.cse.unsw.edu.au/~cs3421/slides/bres/ScanLine.html

Cohen-Sutherland
• http://www.utdallas.edu/~axe021000/Projects1/CohenSuther/CohenSutherlandDem
onstration.html
Download