computaÇÃo grÁfica aula 03 prof. edison oliveira de jesus
TRANSCRIPT
![Page 1: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/1.jpg)
COMPUTAÇÃO GRÁFICACOMPUTAÇÃO GRÁFICA
Aula 03
Prof. Edison Oliveira de Jesus
![Page 2: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/2.jpg)
Assuntos abordados nesta Assuntos abordados nesta aulaaula
Preenchimento de Polígonos
![Page 3: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/3.jpg)
Representação de um polígonoRepresentação de um polígono Um polígono pode ser representado da seguinte
forma:
onde: vk = vértice de coordenadas ( x , y )
v1 v2 v3 vnP λ
![Page 4: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/4.jpg)
Construção de um polígonoConstrução de um polígono
v1
v4
v3
v2
v5
draw
draw
draw
draw
draw
![Page 5: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/5.jpg)
Usa-se n – 1 vértices
Último vértice é igual ao primeiro
Problema nesta representação:
Transformações geométricas são aplicadas a ca-da vértice;
![Page 6: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/6.jpg)
Solução para este problema:
Representar o polígono pelas suas coordenadas relativas de todos os vértices exceto e primeiro, que terão coordenadas absolutas.
V1 ( x, y ) v2
v3
v4
a´´ unidades
a´ unidades
a´´´´ unidades
A´´´ unidades
![Page 7: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/7.jpg)
Outra representaçãoOutra representação Vetorial com estrutura da linguagem:
Estrutura PONTO x, y
PONTO coordenadas[10]
![Page 8: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/8.jpg)
Métodos de preenchimento do Métodos de preenchimento do polígonopolígono
FLOOD
um pixel aleatório interno ao polígono é enviado à rotina FLOOD;
Neste caso, este pixel está apagado e portanto, ele é aceso.
Todos os pixels vizinhos a este pixel também são enviados à rotina; ( recursão pode ser utilizada aqui ).
![Page 9: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/9.jpg)
Problemas com este métodoProblemas com este método
Se a quantidade de pontos for muito grande, a solução pode causar um estouro ( overflow ) da pilha de armazenamento.
Uma solução seria a utilização de variáveis globais;
![Page 10: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/10.jpg)
Algoritmo FLOODAlgoritmo FLOODalgoritmo flood ( x, y ) se ( não aceso ( x, y ) ) então plota pixel ( x, y ) flood ( x + 1, y ) flood ( x – 1 , y ) flood ( x, y + 1 ) flood ( x, y – 1 ) fim-seFim-algoritmo
![Page 11: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/11.jpg)
Métodos de preenchimento do Métodos de preenchimento do polígonopolígono
SCAN LINE
Desenha-se o polígono usando seus vértices;
Traça-se uma linha horizontal ( scan line ), passan-do-a em cada um dos vértices do polígono;
A scan line é traçada da esquerda para a direita e deve ficar dentro do bounding box do polígono;
Encontrar a margem esquerda do polígono e come-çar a traçar a scan line até encontrar a margem direita do polígono;
![Page 12: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/12.jpg)
Bounding BoxBounding Box É o retângulo que circunda o polígono.
![Page 13: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/13.jpg)
PreenchimentoPreenchimento
Scan line
Borda esquerda
Borda direita
Borda esquerda
Borda direita
1
![Page 14: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/14.jpg)
AlgoritmoAlgoritmoAlgoritmo scan-line ( ) para y = 0 até ymax faça x ← 0 repita enquanto ( não aceso ( x, y ) e x < xmax ) faça x ← x + 1 fim_enquanto // achou margem esquerda se x < xmax então x ← x + 1 xs ← x enquanto ( não aceso ( x, y ) ) faça x ← x + 1 fim_enquanto // achou margem direita linha ( xs, y, x, y ) // scan line x ← x + 1 fim_se até x ≥ xmax fim_parafim_algoritmo
![Page 15: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/15.jpg)
Preenchimento convexoPreenchimento convexo
convexo
Convexo horizontal Não
convexo
![Page 16: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/16.jpg)
Preenchimento ConvexoPreenchimento Convexo Para polígonos convexos, o algoritmo scan line
mostrado anteriormente, funciona sem problemas;
O problema neste tipo de preenchimento é quando se trata com polígonos não convexos.
![Page 17: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/17.jpg)
Problemas do métodoProblemas do método Traçar scan lines erradas.
![Page 18: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/18.jpg)
Preenchimento de polígonos em Preenchimento de polígonos em geralgeral
Calcular as coordenadas dos pontos de interseção de cada scan line com as bordas do polígono;
Ordenar estas coordenadas tomando com chave o valor de x;
Agrupar as coordenadas em pares;
Preencher o polígono usando como extremos das scan lines, os pares obtidos no item anterior;
![Page 19: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/19.jpg)
Calculando os pontos de Calculando os pontos de interseçãointerseção
A interseção de uma scan line com uma borda do polígono é dada da seguinte forma:
borda
Scan line nova
Scan line anterior
P1 ( x1 , y1 )
P2 ( x2 , y2 )
Panterior( Xanterior Yscan line anterior )
Pnovor( Xnovor Yscan line anterior + 1)
X
Y
![Page 20: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/20.jpg)
Se y1 < y2
então ypasso ← 1
senão swapping ( P1 e P2 )
Logo: y2 – y1 = 1 pois passo na direção y é igual a 1
![Page 21: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/21.jpg)
Portanto: m = ( y2 – y1 ) / ( x2 – x1 )
m = 1 / ( x2 – x1 ) Como x1 e x2 são conhecidos, o ponto p ( xnovo, yscan line )
terá suas coordenadas calculadas da seguinte for-ma:
equação ( 1 )
![Page 22: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/22.jpg)
da equação 1, tem-se:
m = 1 / ( xnovo – x1 )
E logo:
xnovo = x1 + 1 / m
e: Yscan line corresponde à y da linha scan line em estudo;
![Page 23: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/23.jpg)
Como o processo é repetido para cada scan line, pode-se escrever:
Xnovo = Xanterior + 1 / m equação ( 2 )
![Page 24: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/24.jpg)
Nova scan line
Scan line anterior
xanterior xnovoX
Y
![Page 25: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/25.jpg)
Portanto, se a primeira scan line for conhecida ( aquela mais próxima ao eixo X ), pode-se através da equação 2, calcular todas as outras scan lines.
A idéia é traçar uma scan line por vez, começando por baixo até chegar ao topo do polígono, ou seja, ao valor mais alto de Y.
![Page 26: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/26.jpg)
Quais bordas a scan line intercepta? Não se deve testar cada scan line com todas as bordas
do polígono e sim, criar uma tabela com to-das as scan lines que cortam o polígono;
A estrutura de dados para esta tabela pode ser um vetor de apontadores, contendo um apontador para cada scan line;
Cada apontador contem aquelas bordas cujo menor valor de y inicia na scan line representada por aquele apontador;
Na verdade cada apontador aponta para uma lista de bordas.
![Page 27: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/27.jpg)
Exemplo de PreenchimentoExemplo de Preenchimento
1 5 10 151
5
10
b1b2
b3
b4
b5 b6b7
b8b9
b10
b11b12
b13
b14 b15
b16b17
b18b19
b20b21
Figura 01
![Page 28: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/28.jpg)
Vetor com os apontadores das Vetor com os apontadores das scan linesscan lines
00 01 02 03 04 05 06 07 08 09 10 11 12
λ λ λ λb1
b21
b20
b19
b18
b17
b16
b2 b3
b14
b15
b12
b13
b11
b4 b10
b6
b9
b5
b8
b7 λ
scan lines→
Isto significa que da scan line 01 têm inicio as bordas 1, 21, 20, 19, 18, 17 e 16
Figura 02
![Page 29: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/29.jpg)
Esta tabela é usada para determinar quais bordas, cada scan line intercepta e qual é o valor de X em cada intercessão;
o valor Y de um ponto de intercessão é o número da scan line atual;
![Page 30: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/30.jpg)
Estrutura de cada bordaEstrutura de cada borda Cada borda do vetor de scan lines tem a seguinte
estrutura:
YTOPO
Y da mais alta scan line que a borda interceptou
Xmin
X da mais baixa scan line daquela borda
1 / m
Valor inverso da inclinação da borda
Figura 03
![Page 31: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/31.jpg)
Lista de bordasLista de bordas Cada scan line deve ter as bordas de sua lista
( conforme mostra a figura 2 ) substituídas pelos seus respectivos valores, como determina a estru-tura de bordas mostrada na figura 3.
Assim, por exemplo, na scan line 01, tem-se a se-guinte lista de bordas:
b1 → b21 → b20 → b19 → b18 → b17 → b16
![Page 32: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/32.jpg)
Exemplo de PreenchimentoExemplo de Preenchimento
1 5 10 151
5
10
b1b2
b3
b4
b5 b6b7
b8b9
b10
b11b12
b13
b14 b15
b16b17
b18b19
b20b21
Figura 01
![Page 33: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/33.jpg)
A borda b1 por exemplo, vai do ponto ( 2, 2 ) ao ponto ( 4, 1 )
Portanto, para esta borda, a estrutura de bordas da figura 2, seria constituída dos seguintes valores:
maior y = 2 X do menor y = 4 m = -1/2 logo: 1/m = -2
Logo, esta borda é representada pelos valores: [ 2 | 4 | -2 ]
![Page 34: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/34.jpg)
Observe alguns casos especiais:
1. Borda b11 da scan line 5 Vai do ponto ( 14, 5 ) ao ponto ( 14, 6 ) maior y = 6 X do menor y = 14 1 / m = 0
Logo, esta borda é representada pelos valores: [ 6 | 14 | 0 ]
![Page 35: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/35.jpg)
2. Borda b17 da scan line 1 Como esta borda é horizontal ela já se confunde
com a scan line e portanto, ela não faz parte da lista de bordas da scan line.
![Page 36: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/36.jpg)
1 5 10 151
5
10
b1b2
b3
b4
b5 b6b7
b8b9
b10
b11b12
b13
b14 b15
b16b17
b18b19
b20b21
![Page 37: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/37.jpg)
Vetor de Scan Lines com as Vetor de Scan Lines com as bordasbordas
A seguir são mostradas as bordas que cada scan line intercepta e os seus valores, conforme a estru-tura apresentada na figura 3:
scan line 1 : [ 2 | 4 | -2 ] → [ 4 | 4 | 1/3 ] → [ 4 | 6 | -1/3 ] → [ 4 | 6 | 1/3 ] → [ 4 | 9 | -2/3 ] → [ 3 | 13 | 3/2 ]
scan line 2 : [ 3 | 2 | -1 ]
scan line 3 : [ 5 | 1 | 0 ] → [ 4 | 13 | -3 ]
scan line 4 : [ 5 | 12 | 2 ]
scan line 5 : [ 9 | 1 | 1/2 ] → [ 6 | 14 | 0 ]
![Page 38: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/38.jpg)
Vetor de Scan Lines com as Vetor de Scan Lines com as bordasbordas
scan line 6 : [ 7 | 14 | 2 ]
scan line 7 : [ 9 | 5 | -1 ] → [ 10 | 5 | 4/3 ] → [ 11 | 16 | -3/4 ] scan line 8 : [ 10 | 11 | -1 ] → [ 11 | 11 | 2/3 ]
scan line 9 :
scan line 10 :
scan line 11 :
scan line 12 :
![Page 39: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/39.jpg)
Transformação de vérticesTransformação de vértices Na construção da lista de bordas, são utilizadas as
scan lines que passam pelos vértices do polígono;
Foram mostradas anteriormente as situações onde os vértices são incorporados a esta lista;
Ou seja: ( as linhas tracejadas indicam as scan lines )
Entra na lista
Não entra na lista
Não entra na lista
Entra na lista
Não entra na lista
Figura 04
![Page 40: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/40.jpg)
No primeiro caso, o vértice corresponde às bordas que estão sobre a scan line;
No segundo caso, o vértice corresponde às bordas que estão sob a scan line;
No terceiro caso, a borda está sobre a scan line;
No quarto caso, a scan line cruza a borda fora de seus vértices;
No último caso, o vértice corresponde às bordas que cruzam a scan line.
![Page 41: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/41.jpg)
No último caso, é necessário fazer uma transformação do vértice;
Esta transformação é necessária, senão o vértice é contabilizado duas vezes, uma para a scan line anterior e outra para a scan line atual;
Y + 1
Y X = Xanterior + 1 / m
.(a) (b)
V V
V´
![Page 42: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/42.jpg)
a) Corresponde a situação original;
b) O vértice V foi deslocado para a scan line seguinte, e desta forma sua abscissa deve ser atualizada, conforme as equações:
ynovo = yanterior + 1
xnovo = xanterior + 1 / m
![Page 43: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/43.jpg)
Com a transformação dos vértices, a borda trans-formada é retirada da lista atual de scan lines e é colocada na scan line seguinte já com os seus valores atualizados.
![Page 44: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/44.jpg)
Transformando vérticesTransformando vértices Após analisar o polígono, verifica-se que as bordas mar-
cadas a seguir, devem ser transformadas (seu inicio deve passar para a próxima scan line ):
scan line 1 : b1 → b21 → b20 → b19 → b18 → b16
scan line 2 : b2
scan line 3 : b3 → b14
scan line 4 : b12
scan line 5 : b4 → b11
scan line 6 : b10
scan line 7 : b5 → b6 → b9
scan line 8 : b7 → b8
scan line 9 : scan line 10 :scan line 11 :scan line 12 :
![Page 45: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/45.jpg)
Rearranjo das scan linesRearranjo das scan lines Após rearranjadas, as scan lines têm a seguinte compo-
sição: ( as bordas devem estar ordenadas pelo valor de X )
scan line 1 : [ 2 | 4 | -2 ] → [ 4 | 4 | 1/3 ] → [ 4 | 6 | -1/3 ] → [ 4 | 6 | 1/3 ]
scan line 2 : [ 4 | 8 1/3 | -2/3 ] → [ 3 | 14 1/2 | 3/2 ]
scan line 3 : [ 3 | 1 | -1 ]
scan line 4 : [ 5 | 1 | 0 ] → [ 4 | 10 | -3 ]
scan line 5 : [ 5 | 14 | 2 ]
![Page 46: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/46.jpg)
scan line 6 : [ 9 | 1 1/2 | 1/2 ] → [ 6 | 14 | 0 ]
scan line 7 : [ 9 | 5 | -1 ] → [ 10 | 5 | 4/3 ] → [ 7 | 16 | 2 ]
scan line 8 : [ 10 | 11 | -1 ] → [ 11 | 11 | 2/3 ] → [ 11 | 15 1/4 | -3/4 ]
scan line 9 :
scan line 10 :
scan line 11 :
scan line 12 :
![Page 47: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/47.jpg)
Cálculo das scan linesCálculo das scan lines Calcular agora as scan lines, utilizando a equação 1, até que seus respectivos
valores de Y sejam atingidos. A partir deste ponto elas não são mais calculadas, pois a borda terminou.( Estas estarão marcadas em lilás )
( as bordas devem continuar ordenadas pelo valor de X )
scan line 1 : [ 2 | 4 | -2 ] → [ 4 | 4 | 1/3 ] → [ 4 | 6 | -1/3 ] → [ 4 | 6 | 1/3 ]
scan line 2 : [ 2 | 2 | -2 ] → [ 4 | 4 1/3 | 1/3 ] → [ 4 | 5 2/3 | -1/3 ] → [ 4 | 6 1/3 | 1/3 ] → [ 4 | 8 1/3 | -2/3 ] → [ 3 | 14 1/2 | 3/2 ]
scan line 3 : [ 3 | 1 | -1 ] → [ 4 | 4 2/3 | 1/3 ] → [ 4 | 5 1/3 | -1/3 ] → [ 4 | 6 2/3 | 1/3 ] → [ 4 | 7 2/3 | -2/3 ] → [ 3 | 16 | 3/2 ]
scan line 4 : [ 5 | 1 | 0 ] → [ 4 | 5 | 1/3 ] → [ 4 | 5 | -1/3 ] → [ 4 | 7 | 1/3 ] → [ 4 | 7 | -2/3 ] → [ 4 | 10 | -3 ]
![Page 48: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/48.jpg)
scan line 5 : [ 5 | 1 | 0 ] → [ 5 | 14 | 2 ]
scan line 6 : [ 9 | 1 1/2 | 1/2 ] → [ 6 | 14 | 0 ]
scan line 7 : [ 9 | 2 | 1/2 ] → [ 9 | 5 | -1 ] → [ 10 | 5 | 4/3 ] → [ 7 | 16 | 2 ]
scan line 8 : [ 9 | 2 1/2 | 1/2 ] → [ 9 | 4 | -1 ] → [ 10 | 6 1/3 | 4/3 ] → [ 10 | 11 | -1 ] → [ 11 | 11 | 2/3 ] → [ 11 | 15 1/4 | -3/4 ]
scan line 9 : [ 9 | 3 | 1/2 ] → [ 9 | 3 | -1 ] → [ 10 | 7 2/3 | 4/3 ] → [ 10 | 10 | -1 ] → [ 11 | 11 2/3 | 2/3 ] → [ 11 | 14 1/2 | -3/4 ]
scan line 10 : [ 10 | 9 | 4/3 ] → [ 10 | 9 | -1 ] → [ 11 | 12 1/3 | 2/3 ] → [ 11 | 13 3/4 | -3/4 ]
scan line 11 : [ 11 | 13 | 2/3 ] → [ 11 | 13 | -3/4 ]
![Page 49: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/49.jpg)
Obtendo linhas de Obtendo linhas de preenchimentopreenchimento
O próximo e último passo é a obtenção das linhas de preenchimento ( scan line ) do polígono;
Para cada uma das scan lines obtidas no passo anterior, um segmento de reta que corresponde ao preenchimento do polígono é obtido tomando-se: o X da primeira borda da lista de bordas da scan
line para formar o X1 ;
o X da segunda borda da lista de bordas da scan line para formar o X2 ;
![Page 50: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/50.jpg)
Desta forma o primeiro segmento de reta de preenchimento é formado pelos pontos P1 de coordenadas ( x1 , y ) e P2 de coordenadas ( x2 , y ), onde x1 e x2 são obtidos como mostrado no passo anterior, e y corresponde ao número da scan line.
Isto significa que um par de bordas na lista de scan line, forma um segmento de reta corres-pondente ao preenchimento daquela scan line.
![Page 51: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/51.jpg)
Exemplo de PreenchimentoExemplo de Preenchimento
1 5 10 151
5
10
b1b2
b3
b4
b5 b6b7
b8b9
b10
b11b12
b13
b14 b15
b16b17
b18b19
b20b21
Figura 01
![Page 52: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/52.jpg)
Desta forma, os segmentos de reta obtidos para o preenchimento do polígono, são os seguintes:
scan line 1 : ( 4 , 1 ) ( 4 , 1 )
( 6 , 1 ) ( 6 , 1 )
scan line 2 :( 2 , 2 ) ( 4 1/3 , 2 )
( 5 2/3 , 2 ) ( 6 1/3 , 2 ) ( 8 1/3 , 2 ) ( 14 1/2 , 2 )
![Page 53: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/53.jpg)
scan line 3 :( 1 , 3 ) ( 4 2/3 , 3 )
( 5 1/3 , 3 ) ( 6 2/3 , 3 ) ( 7 2/3 , 3 ) ( 16 , 3 )
scan line 4 :( 1 , 4 ) ( 5 , 4 )( 5 , 4 ) ( 7 , 4 )( 7 , 4 ) ( 10 , 4 )
scan line 5 :( 1 , 5 ) ( 14 , 5 )
![Page 54: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/54.jpg)
scan line 6 :( 1 1/2 , 6 ) ( 14 , 6 )
scan line 7 : ( 2 , 7 ) ( 5 , 7 )( 5 , 7 ) ( 16 , 7 )
scan line 8 :( 2 1/2 , 8 ) ( 4 , 8 )
( 6 1/3 , 8 ) ( 11 , 8 )( 11 , 8 ) ( 15 1/4 , 8 )
![Page 55: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/55.jpg)
scan line 9 :( 3 , 9 ) ( 3 , 9 )( 7 2/3 , 9 ) ( 10 , 9 )( 11 2/3 , 9 ) ( 14 1/2 , 9 )
scan line 10 :( 9 , 10 ) ( 9 , 10 )( 12 1/3 , 10 ) ( 13 3/4 , 10 )
scan line 11 :( 13 , 11 ) ( 13 , 11 )
![Page 56: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/56.jpg)
Otimização do métodoOtimização do método Pode-se otimizar o método:
Eliminando-se pontos da lista de scan lines; Exemplo na scan line 1;
Fundindo scan lines sequenciais. Exemplo na scan line 4.
![Page 57: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/57.jpg)
Lista finalLista final scan line 2 :
( 2 , 2 ) ( 4 1/3 , 2 ) ( 5 2/3 , 2 ) ( 6 1/3 , 2 ) ( 8 1/3 , 2 ) ( 14 1/2 , 2 )
scan line 3 :( 1 , 3 ) ( 4 2/3 , 3 )
( 5 1/3 , 3 ) ( 6 2/3 , 3 ) ( 7 2/3 , 3 ) ( 16 , 3 )
scan line 4 :( 1 , 4 ) ( 10 , 4 )
![Page 58: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/58.jpg)
scan line 5 :( 1 , 5 ) ( 14 , 5 )
scan line 6 :( 1 1/2 , 6 ) ( 14 , 6 )
scan line 7 : ( 2 , 7 ) ( 16 , 7 )
scan line 8 :( 2 1/2 , 8 ) ( 4 , 8 )
( 6 1/3 , 8 ) ( 15 1/4 , 8 )
![Page 59: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/59.jpg)
scan line 9 :( 7 2/3 , 9 ) ( 10 , 9 )( 11 2/3 , 9 ) ( 14 1/2 , 9 )
scan line 10 :( 12 1/3 , 10 ) ( 13 3/4 , 10 )
![Page 60: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/60.jpg)
Polígono PreenchidoPolígono Preenchido
1 5 10 151
5
10
b1b2
b3
b4
b5 b6b7
b8b9
b10
b11b12
b13
b14 b15
b16b17
b18b19
b20b21
![Page 61: COMPUTAÇÃO GRÁFICA Aula 03 Prof. Edison Oliveira de Jesus](https://reader036.vdocuments.site/reader036/viewer/2022070507/570638481a28abb8238f43a0/html5/thumbnails/61.jpg)