Professional Documents
Culture Documents
RASTERIZAÇÃO
RASTERIZAÇÃO
RASTERIZAÇÃO
Temas abordados
• Rasterização
• Preenchimento de polígonos
• Aliasing e antialiasing
1
Rasterização
RASTERIZAÇÃO
• Rasterização
• Preenchimento de polígonos
• Aliasing e antialiasing
RASTERIZAÇÃO
Nomes ...
• Rasterization
• Scan conversion
• Rasterização
2
Rasterização
RASTERIZAÇÃO
RASTERIZAÇÃO
Rasterização
•Transformar Primitivas Gráficas em conjuntos de pixéis
•Coordenadas reais => coordenadas inteiras (Bit Map).
• Algoritmos executados até mihões de vezes para cada cena criada ou actualizada.
3
Rasterização
RASTERIZAÇÃO
• Rasterização
• Preenchimento de polígonos
• Aliasing e antialiasing
RASTERIZAÇÃO
Rasterização de Segmentos
1) Considerar só linhas sólidas com
1 pixel de espessura
2) Ignorar variação luminosidade
com densidade de pixéis
3) Casos triviais: rectas horizontais,
verticais e diagonais Y
y, -x y, x
4) Caso mais simples: recta com
declive contido no primeiro
-x, y x, y
octante
5) Transformar para outros octantes -x, -y x, -y X
-y, -x -y, x
4
Rasterização
RASTERIZAÇÃO
2) Calcular coeficientes a partir dos extremos do segmento: P1(x1, y1) e P2(x2, y2)
RASTERIZAÇÃO
= yi + m (xi , yi)
(xi + 1 , yi + m)
com xi+1 = xi +1
(xi , Round (yi))
yi+1 = Round (yi + m)
Problemas:
5
Rasterização
RASTERIZAÇÃO
F(x, y) < 0
F(x, y) = 0
F(x, y) > 0
RASTERIZAÇÃO
NE
6
Rasterização
RASTERIZAÇÃO
1) Se escolhemos E ( d <= 0 ):
yp+1
d novo = a (xp + 2) + b (yp + 1/2) + c M
= a (xp + 1) + a + b (yp + 1/2) + c yp
= d ant + a xp xp+1 xp+2
2) Se escolhemos NE ( d > 0 ):
yp+2
d novo = a (xp + 2) + b (yp + 3/2) + c M
= a (xp + 1) + a + b (yp + 1/2) + b + c yp+1
= d ant + a + b
yp
d novo = d ant + a + b => incr.NE = a + b xp xp+1 xp+2
RASTERIZAÇÃO
d0 = a + b/2
incr.E = a
incr.NE = a + b
7
Rasterização
RASTERIZAÇÃO
Coeficientes e Incrementos
F(x, y) = a.x + b.y + c
se ∆y = y2 – y1 e ∆ x = x2 – x1
∆y
y= x+B
∆x
∆x y = ∆y x + ∆x B
∆y . x - ∆x . y + ∆x B = a . x + b . y + c = 0
• Assim, tem-se:
d0 = a + b/2 = ∆ y - ∆ x/2 d0 = 2. ∆ y - ∆ x
incr.E = a = ∆ y Para eliminar incr.E = 2. ∆ y
a fracção no valor inicial,
incr.NE = a + b = ∆ y - ∆ x multiplicar tudo por 2 incr.NE = 2. (∆ y - ∆ x)
(função homogénea)
RASTERIZAÇÃO
Algoritmo de Bresenham
void Bresenham (int x1, int y1, int x2, int y2, int linecolor))
{
int dx = x2 – x1; int dy = y2 – y1;
int d = 2 * dy - dx;
int incrE = 2 * dy; int incrNE = 2 * (dy - dx);
int x = x1; int y = y1;
WritePixel (x, y, linecolor);
8
Rasterização
RASTERIZAÇÃO
10 Write (5, 8)
RASTERIZAÇÃO
d=2×3-4=2
incE=2×3=6 incNE=2×(3-4)=-2
5 - 8 0 - 2 8
6 8,75 9 2 NE 0 9
7 9,5 10 0 E 6 9
8 10,25 10 6 NE 4 10
9 11,0 11 4 NE - 11
9
Rasterização
RASTERIZAÇÃO
• Rasterização
• Preenchimento de polígonos
• Aliasing e antialiasing
RASTERIZAÇÃO
Preenchimento de Polígonos
10
Rasterização
RASTERIZAÇÃO
Polígonos...
A B
RASTERIZAÇÃO
Preenchimento de Polígonos
• Princípios Básicos (tirando partido da coerência espacial)
1) Traçar sucessivas linhas de varrimento
horizontais (scan lines)
11
Rasterização
RASTERIZAÇÃO
Spans e Arredondamentos
• À esquerda
– Arredondamento por excesso
– Exemplos:
• 7,3 -> 8
• 6,0 -> 6
• À direita
– Arredondamento por defeito
– Exemplos:
• 7,8 -> 7
• 6,0 -> 6
RASTERIZAÇÃO
C B
1 intersecção em [AB], 0 intersecções em [AB], 1 intersecção em [AB],
0 intersecções em [BC] 0 intersecções em [BC] 1 intersecção em [BC]
12
Rasterização
RASTERIZAÇÃO
RASTERIZAÇÃO
Y ……….
11
12 ……….
10
D
10 ……….
F 9
8 E ……….
8
EF DE
6
7 9 7 -5/2 11 7 6/4
C ………. ymax x 1/m
4
6
A CD
2
5 11 13 0 -
B ……….
0
4
0 2 4 6 8 10 12 14 X FA
3 9 2 0
……….
2
AB BC
1 3 7 -5/2 5 7 6/4 -
•O algoritmo mantém uma Tabela de Lados Activos (Active Edge Table: AET),
•AET regista a informação relativa aos lados intersectados pela linha corrente.
13
Rasterização
RASTERIZAÇÃO
RASTERIZAÇÃO
AET e ET
Y Tabela de Arestas Activas Tabela de Arestas
AB BC
1 3 7 -5/2 5 7 6/4 - FA, CD, EF, DE
AB BC
2 3 4,5 -5/2 5 8,5 6/4 - FA, CD, EF, DE
FA BC
3 9 2 0 5 10 6/4 - CD, EF, DE
FA BC
4 9 2 0 5 11,5 6/4 - CD, EF, DE
FA CD
5 9 2 0 11 13 0 - EF, DE
FA CD
6 9 2 0 11 13 0 - EF, DE
FA EF DE CD
7 9 2 0 9 7 -5/2 11 7 6/4 11 13 0 - vazia
FA EF DE CD
8 9 2 0 9 4,5 -5/2 11 8,5 6/4 11 13 0 - vazia
DE CD
9 11 10 6/4 11 13 0 - vazia
DE CD
10 11 11,5 6/4 11 13 0 - vazia
11 vazia vazia
14
Rasterização
RASTERIZAÇÃO
Fragmentação
14
Y span span
12
14 ∆ esquerdo
- ∆ direito
13 - 10
12 6-6
11 5-5
10 5-5 - 8
9 4-5 6-8
8 3-4 6-7
7 3-4 6-7 6
6 2-4 6-6
5 1-4 6-6
4 5-5 4
3 -
2 -
1 4-4 2
0
0 2 4 6 8 10
RASTERIZAÇÃO
• Rasterização
• Preenchimento de polígonos
• Aliasing e antialiasing
15
Rasterização
RASTERIZAÇÃO
RASTERIZAÇÃO
Efeito de Escada
16
Rasterização
RASTERIZAÇÃO
Perda de Detalhe - 1
Original e pixéis
Incorrecto
Correcto
RASTERIZAÇÃO
Perda de Detalhe - 2
17
Rasterização
RASTERIZAÇÃO
RASTERIZAÇÃO
Técnicas de Antialiasing
• Pré-filtragem
– opera no espaço dos objectos
– considerar a área que vai corresponder a um pixel
– cor do pixel = cores da área ponderadas pelas sub áreas
que ocupam
• Pós-filtragem
– opera no espaço de imagem
– gerar imagem com 2x, 3x, 4x, … maior resolução
– cor do pixel = média das cores dos 4, 9, 16, … pixéis
18
Rasterização
RASTERIZAÇÃO
Pré-filtragem
RASTERIZAÇÃO
19
Rasterização
RASTERIZAÇÃO
RASTERIZAÇÃO
Sem filtragem
Não ponderada
20
Rasterização
RASTERIZAÇÃO
Pós - Filtragem
RASTERIZAÇÃO
Sumário
4Conversão de primitivas
4Como desenhar primitivas 2D no ecrã
4Linhas
4Algoritmo de Bresenham
4Polígonos
4Rasterização : primitivas → pixels
21