Computao Grfica TCC00291 Assunto Rasterizao 2 Rasterizao Introduo
- Slides: 40
Computação Gráfica TCC-00291 Assunto: Rasterização
2 Rasterização Introdução Representação Vetorial x Matricial os da cena através de primitivas geométricas: pontos, segmentos de reta
3 Rasterização Introdução Representação Vetorial x Matricial os da cena através de primitivas geométricas: pontos, segmentos de reta Representação vetorial
4 Rasterização Introdução Representação Vetorial x Matricial Dispositivos gráficos podem ser pensados como matrizes de pixels.
5 Rasterização Introdução Representação Vetorial x Matricial Dispositivos gráficos podem ser pensados como matrizes de pixels. Representação matricial
6 Rasterização Introdução terização é o processo de conversão entre representações vetorial e mat
Rasterização 7 Introdução A rasterização é um processo de amostragem Domínio contínuo Domínio discreto
8 Rasterização Introdução A rasterização é um processo de amostragem Problemas de aliasing são esperados
9 Rasterização Introdução A rasterização é um processo de amostragem Cada primitiva pode gerar um grande número de pixels, logo rapidez é essencial (hardware)
10 Rasterização Introdução Estudaremos apenas a rasterização de segmentos de reta e de polígonos.
11 Rasterização Introdução Estudaremos apenas a rasterização de segmentos de reta e de polígonos. Assumiremos que as primitivas já foram clippadas estão contidas no volume de visão.
12 Rasterização Introdução Estudaremos apenas a rasterização de segmentos de reta e de polígonos. Assumiremos que as primitivas já foram clippadas estão contidas no volume de visão. Assumiremos também que as coordenadas de um pixel são dadas por:
13 Rasterização Introdução Assumiremos também que as coordenadas de um pixel são dadas por:
14 Rasterização Segmentos Como decidir quais pixels devem ser acesos para que seja traçada uma linha?
Rasterização 15 Critério de Bresenham x dominante: um pixel por coluna
Rasterização 16 Critério de Bresenham x dominante: um pixel por coluna y dominante: um pixel por linha
17 Rasterização Algoritmo DDA
Rasterização 18 Algoritmo DDA void linha(int x 1, int y 1, int x 2, int y 2) { float m = (y 2 -y 1)/(x 2 -x 1); float b = y 1 - m*x 1; float y; fragmento(x 1, y 1); while( x 1 < x 2 ) { x 1++; y = m*x 1 + b; fragmento(x 1, Math. round(y)); } }
Rasterização 19 Algoritmo DDA void linha(int x 1, int y 1, int x 2, int y 2) { float m = (y 2 -y 1)/(x 2 -x 1); float b = y 1 - m*x 1; float y; fragmento(x 1, y 1); while( x 1 < x 2 ) { x 1++; y = m*x 1 + b; fragmento(x 1, Math. round(y)); } } Obs.
Rasterização 20 Algoritmo DDA void linha(int x 1, int y 1, int x 2, int y 2) { float m = (y 2 -y 1)/(x 2 -x 1); float b = y 1 - m*x 1; float y; fragmento(x 1, y 1); while( x 1 < x 2 ) { x 1++; y = m*x 1 + b; fragmento(x 1, Math. round(y)); } } Como economizar?
21 Rasterização Algoritmo DDA void linha(int x 1, int y 1, int x 2, int y 2) { float m = (y 2 -y 1)/(x 2 -x 1); float b = y 1 - m*x 1; float y; fragmento(x 1, y 1); while( x 1 < x 2 ) { x 1++; y += m; fragmento(x 1, Math. round(y)); } }
22 Rasterização Algoritmo DDA void linha(int x 1, int y 1, int x 2, int y 2) { float m = (y 2 -y 1)/(x 2 -x 1); float b = y 1 - m*x 1; float y; fragmento(x 1, y 1); while( x 1 < x 2 ) { x 1++; y += m; fragmento(x 1, Math. round(y)); } } Como economizar?
23 Rasterização Algoritmo de Bresenham Algoritmo incremental que utiliza apenas soma e subtração de inteiros.
Rasterização 24 Algoritmo de Bresenham Algoritmo incremental que utiliza apenas soma e subtração de inteiros. Idéia Decidir se o próximo pixel vai ter coordenadas ou
Rasterização 25 Algoritmo de Bresenham Algoritmo incremental que utiliza apenas soma e subtração de inteiros. Idéia Decidir se o próximo pixel vai ter coordenadas ou Baseado na variável de decisão
26 Rasterização Algoritmo de Bresenham Se a variável é positiva:
27 Rasterização Algoritmo de Bresenham Se a variável é positiva: Se a variável é negativa:
28 Rasterização Algoritmo de Bresenham Calculando incrementalmente…
29 Rasterização Algoritmo de Bresenham Calculando incrementalmente…
30 Rasterização Algoritmo de Bresenham Calculando incrementalmente…
31 Rasterização Algoritmo de Bresenham Calculando incrementalmente…
32 Rasterização Polígonos O processo de preenchimento de um polígono com um padrão de cores é equivalente à decidir quais pontos do plano estão em seu interior.
Rasterização 33 Polígonos Teste par ou ímpar. Todo raio saindo de p para o infinito deve cortar um número ímpar de segmentos do polígono, se o ponto for de interior e um número par se o ponto for de exterior.
Rasterização 34 Polígonos Teste par ou ímpar. Usualmente, trabalhamos com scanlines para definir os segmentos e o ponto p.
Rasterização 35 Polígonos Teste par ou ímpar. O algoritmo funciona para polígonos simples, como vemos no exemplo abaixo:
Rasterização 36 Polígonos Teste winding number. Supõe que as arestas do polígono são percorridas em uma direção fixa, a partir de um ponto inicial.
Rasterização 37 Polígonos Teste winding number. O winding number é o número de vezes que o ponto é envolvido por um ciclo de segmentos.
Rasterização 38 Polígonos Teste winding number. Se o ponto tiver winding number igual a zero, então é exterior.
Rasterização 39 Polígonos Teste winding number. Exercício: Calcule o winding number de p.
Computação Gráfica TCC-00291 Assunto: Rasterização