A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Dispositivos de Visualização e Rasterização

Apresentações semelhantes


Apresentação em tema: "Dispositivos de Visualização e Rasterização"— Transcrição da apresentação:

1 Dispositivos de Visualização e Rasterização
Alex F. V. Machado

2 Dispositivos de Visualização
Toda imagem criada através de recursos computacionais deve ser representada em algum dispositivo físico que permita a sua visualização. Diversas tecnologias e diferentes tipos de dispositivos são utilizados para gerar representações visuais.

3 Dispositivos de Visualização
É possível classificar os dispositivos de exibição (traçadores, impressoras e terminais de vídeo) em duas principais categorias, segundo a forma pela qual as imagens são geradas: Dispositivos vetoriais: traçadores digitais, osciloscópio e monitor CRT (Cathode Ray Tube). Dispositivos matriciais: Impressoras e Dispositivos de Vídeo de Varredura (Raster Scanning VDUs)

4 Dispositivos de Visualização
Dispositivo gráfico vetorial (osciloscópio)

5 Dispositivos de Visualização
Dispositivo gráfico matricial (Dispositivos de Vídeo de Varredura)

6 Dispositivos de Visualização
Dispositivo gráfico matricial (Dispositivos de Vídeo de Varredura)

7 Rasterização

8 Representação Vetorial x Matricial
Normalmente, gráficos são definidos através de primitivas geométricas como pontos, segmentos de retas, polígonos, etc Representação vetorial Dispositivos gráficos podem ser pensados como matrizes de pixels (rasters) Representação matricial Rasterização é o processo de conversão entre representações vetorial e matricial

9 Representação Vetorial x Matricial
Obs.: SRU - Sistema de Referência do Universo SRT - Sistema de Referência da Tela SRC - Sistema de Referência da Câmera (3D)

10 Considerações Gerais Rasterização é um processo de amostragem
Domínio contínuo  discreto Problemas de aliasing são esperados Cada primitiva pode gerar um grande número de pixels Rapidez é essencial Em geral, rasterização é feita por hardware Técnicas de antialiasing podem ser empregadas, usualmente extraindo um custo em termos de desempenho

11 Rasterização de Segmentos de Reta
Segmento de reta entre P1= (x1, y1) e P2= (x2, y2) Já foi recortado com relação ao viewport Objetivo é pintar os pixels atravessados pelo segmento de reta Na verdade, nem todos, apenas os mais próximos Reta de suporte dada por a x + b y + c = 0 Queremos distinguir os casos Linhas ~ horizontais  computar y como função de x Linhas ~ verticais  computar x como função de y

12 Rasterização de Segmentos de Reta (algoritmo básico)
yi = m xi + b onde: m = Dy/Dx b = y1 - m x1

13 Rasterização de Segmentos de Reta (algoritmo básico)
yi = m xi + b onde: m = Dy/Dx b = y1 - m x1

14 Rasterização de Segmentos de Reta (algoritmo básico)
yi = m xi + b onde: m = Dy/Dx b = y1 - m x1 void Line1(int x1, int y1, int x2, int y2, int color) { float m = (y2-y1)/(x2-x1); float b = y1 - m*x1; float y; int x; PutPixel(x1,y1,color); for (x=x1+1; x<=x2; x++) y = m*x + b; PutPixel(x,ROUND(y), color); }

15 Rasterização de Segmentos de Reta (algoritmo básico)
yi = m xi + b onde: m = Dy/Dx b = y1 - m x1 void Line1(int x1, int y1, int x2, int y2, int color) { float m = (y2-y1)/(x2-x1); float b = y1 - m*x1; float y; int x; PutPixel(x1,y1,color); for (x=x1+1; x<=x2; x++) y = m*x + b; PutPixel(x,ROUND(y), color); } (x1,y1) (x2,y2) y=mx+b b (3,2) (9,4) y=(1/3)x+1 1 3 4 (4,2.33) 5 2 (4,2) (5,3) (5,2.66) Exemplo Calcula-se m e b 1a iteração 2a iteração 3a iteração

16 Como melhorar o algoritmo?
void Line2(int x1, int y1, int x2, int y2, int color) { float m = (y2-y1)/(x2-x1); float b = y1 - m*x1; float y; int x; PutPixel(x1,y1,color); for (x=x1+1; x<=x2; x++) y = m*x + b; PutPixel(x,ROUND(y), color); } ① multiplication ② addition ③ round operation Como tirar a multiplicação?

17 Rasterização de Segmentos de Reta (outros algoritmos)
(Algoritmo de linha incremental) (Algoritmo de Bresenham)

18 Rasterização de Segmentos de Reta (algoritmo de linha incremental)
xi+1 = xi + 1 então yi+1 = yi + Dy/Dx m void LineDDA(int x1, int y1, int x2, int y2, int color) { float y; float m = (y2-y1)/(x2-x1); int x; PutPixel(x1,y1, color); y = y1; for (x=x1+1; x<=x2; x++) y = y+m; PutPixel(x,ROUND(y), color); }

19 Rasterização de Segmentos de Reta (algoritmo de linha incremental)
xi+1 = xi + 1 então yi+1 = yi + Dy/Dx void LineDDA(int x1, int y1, int x2, int y2, int color) { float y; float m = (y2-y1)/(x2-x1); int x; PutPixel(x1,y1, color); y = y1; for (x=x1+1; x<=x2; x++) y = y+m; PutPixel(x,ROUND(y), color); } m Ainda são necessários uma adição de floats e uma round operation. É possível fazer um algoritmo apenas com somas de inteiros. O nome desse algoritmo é: Bresenham’s algorithm.

20 Entendendo o prolema: Desenho de linhas

21 Rasterização de Segmentos de Reta (Algoritmo de Bresenham)

22 Rasterização de Segmentos de Reta (Algoritmo de Bresenham)

23 Rasterização de Segmentos de Reta (Algoritmo de Bresenham)

24 Rasterização de Segmentos de Reta (Algoritmo de Bresenham)
void BresLine(int x1, int y1, int x2, int y2, int cor) x = x1; y = y1; dy = y2-y1; dx = x2-x1; m = dy/dx; e = m – 0.5; for(i=1;i<=dx;i++){ WritePixel(x, y); IF (e > 0) { y = y+1; e = e – 1; } e = e+m; x = x+1; PutPixel(x,ROUND(y), color);

25 Rasterização de Segmentos de Reta (Algoritmo de Bresenham)
Outros Octantes

26 Rasterização de Segmentos de Reta (Algoritmo de Bresenham) Vantagens:


Carregar ppt "Dispositivos de Visualização e Rasterização"

Apresentações semelhantes


Anúncios Google