rasterização de primitivas 2d e pipeline 2d -...
TRANSCRIPT
![Page 1: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/1.jpg)
Rasterização de primitivas 2D e Pipeline 2D
Soraia Raupp Musse
![Page 2: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/2.jpg)
Algoritmos de rasterização para primitivas 2D
![Page 3: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/3.jpg)
Objetivo:Aproximar primitivas matemáticas descritas através de vértices por através de vértices por meio de um conjunto de pixels de determinada cor
![Page 4: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/4.jpg)
Display
Modelo 2D
Display
![Page 5: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/5.jpg)
Pipeline de visualização 2D
SRU 2D
(0,0)
![Page 6: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/6.jpg)
Window
Viewport
Pipeline de visualização 2D
SRU 2D
(0,0)
![Page 7: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/7.jpg)
Pipeline 2D
� SRO� SRU� SRW(recorte 2D)� SRV� SRD
![Page 8: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/8.jpg)
Pipeline de visualização 2D
(3,10) (5,11)
Obj1vi SRU = (2,8)
Obj1vf SRU = (3,10)
SRU 2D
(2,8)
(3,10)
(1,7)
Windowvi SRU = (1,7)
Windowvf SRU = (5,11)
Obj1vi Window = ?
Obj1vf Window = ?
(0,0)
![Page 9: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/9.jpg)
(3,10) (4,4)
Pipeline de visualização 2D
Windowvi SRU = (1,7)
Windowvf SRU = (5,11)
TSRU-SRW=0 – WindowviSRU
TSRU-SRWx=-1T y=-7
SRU 2D
(2,8)
(3,10)
(0,0)
TSRU-SRWy=-7
Windowvi SRW = (0,0)
Windowvf SRW = (4,4)
(0,0)
![Page 10: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/10.jpg)
(2,3) (4,4)
Pipeline de visualização 2D
Windowvi SRU = (1,7)
Windowvf SRU = (5,11)
TSRU-SRW=0 – WindowviSRU
TSRU-SRWx=-1T y=-7
SRU 2D
(1,1)
(2,3)
(0,0)
TSRU-SRWy=-7
Windowvi SRW = (0,0)
Windowvf SRW = (4,4)
Obj1vi Window = (1,1)Obj1vf Window = (2,3)
(0,0)
![Page 11: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/11.jpg)
(2,3) (4,4)
Dispositivo
(20,30)
Pipeline de visualização 2D
SRU 2D
(1,1)
(2,3)
(0,0)(10,20)
(20,30)
Coordenadas do Obj1
no SRV (dispositivo) ???
(0,0)
![Page 12: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/12.jpg)
(1,1)
(2,3)
(0,0)
(4,4)
Dispositivo
(10,20)
(20,30)
Transformação SRU->SRD
(10,20)
Coordenadas do Obj1
no SRV (dispositivo) ???
( )
( )( )vv
ww
wwvv xixf
xixf
xixxix −
−
−+=
>>>Proporcionalidade
![Page 13: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/13.jpg)
(1,1)
(2,3)
(0,0)
(4,4)
Dispositivo
(10,20)
(20,30)
Você calcula….
(10,20)
Coordenadas do Obj1
no SRV (dispositivo) ???
( )
( )( )vv
ww
wwvv xixf
xixf
xixxix −
−
−+=
>>>Proporcionalidade
![Page 14: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/14.jpg)
(2,3) (4,4)
Dispositivo
(20,30)
Mapeamento:
(1,1)
(2,3)
(0,0)(10,20)
(20,30)
Coordenadas do Obj1
no SRV (dispositivo)
(12,5; 22,5)
(15; 27,5)
![Page 15: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/15.jpg)
SR´s 2D
� SRO� SRU� SRW(recorte 2D)� SRV� SRD
![Page 16: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/16.jpg)
Algoritmos de rasterização
�Algoritmos de varredura
![Page 17: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/17.jpg)
Algoritmos de rasterização
�Algoritmos de varredura
![Page 18: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/18.jpg)
Algoritmos de rasterização
�Algoritmos de varredura�Algoritmos de recorte
![Page 19: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/19.jpg)
Algoritmos de varredura
�Resolução por Método incremental� Maneira para resolver equações
diferenciais através de métodos numéricosdiferenciais através de métodos numéricos� Sucessivas operações de incremento
baseado no ponto atual
![Page 20: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/20.jpg)
Algoritmos de varredura
�Método incremental(10,5)
{ Dx=xf-xi;
Dy=yf-yi;
M=Dy/Dx;
y=yi;
(0,0)
y=yi;
For (x=xi;x<=xf;x++)
{
Write(x,int(floor(y+0,5), value);
y+=M;
}
}
Coordenadas dos pixel
escritos?
![Page 21: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/21.jpg)
Algoritmos de varredura
�Método incremental(10,5)
{ Dx=xf-xi;
Dy=yf-yi;
M=Dy/Dx;
y=yi;(8,4)
(9,5)
(0,0)
y=yi;
For (x=xi;x<=xf;x++)
{
Write(x,int(floor(y+0,5), value);
y+=M;
}
}
(5,3)
(1,1)(2,1)
(3,2)(4,2)
(6,3)(7,4)
(8,4)
![Page 22: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/22.jpg)
Algoritmos de varredura
�Porque usar floor?
![Page 23: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/23.jpg)
Algoritmos de varredura
�Bresenham – Algoritmo do ponto médio� Atrativo porque usa somente operações
aritméticas (não usa round ou floor)aritméticas (não usa round ou floor)� É incremental
![Page 24: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/24.jpg)
Algoritmos de varredura
�Porque ponto médio?
![Page 25: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/25.jpg)
Algoritmos de varredura
� Ponto médio while (x<x1) {
{ dx= x1 – x0; if (d<=0){dy = y1 – y0; d+=incrE; x++;}d = dy * 2 – dx; else {d = dy * 2 – dx; else {incrE = dy * 2; d+=incrNE; x++;
y++}incrNE = (dy-dx) * 2;x = x0; writepixel(x,y,value);y = y0; }writepixel(x,y,value); }
** Descubra os pixels “pintados”da reta descrita pelos vértices (0,0) e (10,5)
![Page 26: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/26.jpg)
Algoritmos de varredura
�Algoritmo do ponto médio
(10,5)
(8,4)(9,4)
(0,0)
(5,2)
(1,0)(2,1)
(3,1)(4,2)
(6,3)(7,3)
(8,4)
![Page 27: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/27.jpg)
Algoritmos de varredura
�Algoritmos para preenchimento. Dois problemas:
Decisão de qual pixel preencher� Decisão de qual pixel preencher� Decisão de qual valor preencher
![Page 28: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/28.jpg)
Algoritmos de varredura
�Algoritmos para preenchimento: Retângulo
For (y=ymin; y<=ymax; y++)
for (x=xmin, x<=xmax; x++)
writepixel(x,y,value);
![Page 29: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/29.jpg)
Algoritmos de varredura
�Algoritmos para preenchimento: Polígonos convexos ou não (scanline)
![Page 30: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/30.jpg)
Algoritmos de varredura
�Algoritmos para preenchimento: Polígonos convexos ou não
Passos:Passos:
1) Encontrar as intersecções da scan
line com as arestas do polígono
2) Ordenar as intersecções
3) Preencher os pixels entre 2
intersecções (regra de paridade
que inicia em par, muda quando
encontra uma intersecção e escreve
quando é impar)
![Page 31: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/31.jpg)
Algoritmos de varredura
�Algoritmos para preenchimento:� Arestas horizontais
� Vizinhança de pixels interceptados
![Page 32: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/32.jpg)
Algoritmos de recorte
Objetivo: otimização das estruturas a serem desenhadas no dispositivo
Trata o recorte contra as linhas da janela de seleção (retângulo)
![Page 33: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/33.jpg)
Algoritmos de recorte
>>Recorte de pontos contra retângulo
B F
H
xi <= x <= xf
Yi <= y <= yf
AC
D
EG
H
I
J
C
D
EG
K L
![Page 34: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/34.jpg)
Algoritmos de recorte
B F
HB’ F’
>>Recorte de arestas (linhas) contra retângulo
AC
D
EG
H
I
J
A’
B’ F’
H’
I’
J’
C
D
EG
K L
![Page 35: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/35.jpg)
Algoritmos de recorte
Recorte de linhas: Trivialmente aceito
B F
H • C e D estão dentro do retângulo A
C
D
EG
H
I
J
• C e D estão dentro do retângulo
de seleção
K L
![Page 36: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/36.jpg)
Algoritmos de recorte
Recorte de linhas: Trivialmente recusado
B F
H • Os dois pontos estão fora do A
C
D
EG
H
I
J
• Os dois pontos estão fora do
retângulo e tem y < yi ou y > yf
e x < xi ou x > xf
K L
![Page 37: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/37.jpg)
Algoritmos de recorte
Recorte de linhas: Cálculos de recorte
B F
H • Um dos pontos da linha está fora A
C
D
EG
H
I
J
• Um dos pontos da linha está fora
e outro está dentro do retângulo
• Linha deve ser recortada
K L
![Page 38: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/38.jpg)
Algoritmos de recorte
Recorte de linhas: Cálculos de recorte
B
F’• Um dos pontos da linha está fora
AC
D
E
F’
G
H’
I
J
• Um dos pontos da linha está fora
e outro está dentro do retângulo
• Linha deve ser recortada
K L• Encontrar novos vértices
![Page 39: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/39.jpg)
Algoritmos de recorte
Recorte de linhas: Cálculos de recorte
B
H • Os dois pontos estão fora A
C
D
E FG
H
I
J
• Os dois pontos estão fora
• Linha deve ser recortadaK L
• Os dois pontos estão fora do
retângulo e !(y < yi ou y > yf
e x < xi ou x > xf)
![Page 40: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/40.jpg)
Algoritmos de recorte
Recorte de linhas: Cálculos de recorte
B
H • Os dois pontos estão fora A
C
D
E´ F´G
H
I
J
• Os dois pontos estão fora
K L• Encontrar novos vértices
• Linha recortada
![Page 41: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/41.jpg)
Algoritmos de recorte
Algoritmo de Cohen-Sutherland
10001001 1010
00000001
0101 0100
0010
0110
![Page 42: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/42.jpg)
Algoritmos de recorte
Algoritmo de Cohen-Sutherland
If y > yf � seta primeiro bit em 1
If y < yi � seta segundo bit em 1If y < yi � seta segundo bit em 1
If x > xf � seta terceiro bit em 1
If x < xi � seta quarto bit em 1
![Page 43: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/43.jpg)
Algoritmos de recorte
Algoritmo de Cohen-SutherlandB F
H• Bit codes dos pontos?
AC
D
EG
H
I
JK L
• Como devem ser os bit codes
dos pontos trivialmente aceitos?
• Como devem ser os bit codes
das arestas trivialmente
recusadas?
• O que fazer com os que não
são nem aceitos nem
recusados?
![Page 44: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/44.jpg)
Algoritmos de recorte
Algoritmo de Cohen-Sutherland
• Bit codes dos pontos?B (1000) F (1010)
H (0010)A (0001)
C (0000)
D (0000)
EG (0000)
H (0010)
I(0001)
J (0110)K (0101) L (0100)
![Page 45: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/45.jpg)
Algoritmos de recorte
Algoritmo de Cohen-Sutherland
• Bit codes dos pontos?B (1000) F (1010)
H (0010) • Como devem ser os bit codes
dos pontos trivialmente aceitos?
0000
•Arestas formadas por pontos trivialmente aceitos são trivialmente aceitas
A (0001)C (0000)
D (0000)
EG (0000)
H (0010)
I(0001)
J (0110)K (0101) L (0100)
![Page 46: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/46.jpg)
Algoritmos de recorte
Algoritmo de Cohen-Sutherland
•Como devem ser os bit codes B (1000) F (1010)
H (0010) dos pontos trivialmente aceitos?
0000
• Como devem ser os bit codes
das arestas trivialmente
recusadas? AND entre bit codes
dos pontos deve ser != 0
A (0001)C (0000)
D (0000)
EG (0000)
H (0010)
I(0001)
J (0110)K (0101) L (0100)
![Page 47: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/47.jpg)
Algoritmos de recorte
Algoritmo de Cohen-Sutherland
•Como devem ser os bit codes B (1000) F (1010)
H (0010) dos pontos trivialmente aceitos?
0000
• Como devem ser os bit codes
das arestas trivialmente
recusadas? AND entre end
points deve ser != 0
• O que fazer com os que não
são nem aceitos nem
recusados?
A (0001)C (0000)
D (0000)
EG (0000)
H (0010)
I(0001)
J (0110)K (0101) L (0100)
![Page 48: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/48.jpg)
Algoritmos de recorte
Algoritmo de Cohen-SutherlandB F
H• Calcular segmentos através
AC
D
EG
H
I
JK L
das intersecções
![Page 49: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/49.jpg)
Algoritmos de recorteProcesso Iterativo:
1) Pares de pontos das arestas são testados para serem aceitos ou recusados trivialmente (slides anteriores)
2) Para as arestas A que sobram:i) Calcular as intersecções da aresta Ai com as arestas do polígono de
recorte;recorte;ii) dividir a aresta em 2 segmentos: antes da primeira intersecção e depois iii) Testar se recusado ou aceito para cada segmento da aresta
A
B
A’
A-BA-A’ e A’-B
![Page 50: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/50.jpg)
Algoritmos de recorteProcesso Iterativo:
1) Pares de pontos das arestas são testados para serem aceitados ou recusados trivialmente (slides anteriores)
2) Para as arestas A que sobram:i) Calcular as interações da aresta Ai com as arestas do polígono de
recorte;recorte;ii) dividir a aresta em 2 segmentos: antes da primeira intersecção e depois iii) Testar se recusado ou aceito para cada segmento da aresta
A
B
A’
A-BA-A’ (TR) e A’-B
![Page 51: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/51.jpg)
Algoritmos de recorteProcesso Iterativo:
1) Pares de pontos das arestas são testados para serem aceitados ou recusados trivialmente (slides anteriores)
2) Para as arestas A que sobram:i) Calcular as interações da aresta Ai com as arestas do polígono de
recorte;recorte;ii) dividir a aresta em 2 segmentos: antes da primeira intersecção e depois iii) Testar se recusado ou aceito para cada segmento da aresta
A
B
A’
A-B = deve ser recortadoA-A’ (TR) e A’-BA’-B’ e B’-B
B’
![Page 52: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/52.jpg)
Algoritmos de recorteProcesso Iterativo:
1) Pares de pontos das arestas são testados para serem aceitados ou recusados trivialmente (slides anteriores)
2) Para as arestas A que sobram:i) Calcular as interações da aresta Ai com as arestas do polígono de
recorte;recorte;ii) dividir a aresta em 2 segmentos: antes da primeira intersecção e depois iii) Testar se recusado ou aceito para cada segmento da aresta
A
B
A’
A-B = deve ser recortadoA-A’ (TR) e A’-BA’-B’ (TA) e B’-B (TR)
http://www.cs.princeton.edu/~min/cs426/jar/clip.html
B’
![Page 53: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/53.jpg)
� Inclui o problema de recorte de segmentos de reta� Polígono resultante tem vértices que são
Algoritmos de recorte
>>Recorte de polígono contra retângulo
� Polígono resultante tem vértices que são� Vértices da janela,� Vértices do polígono original, ou� Pontos de interseção aresta do polígono/aresta da janela
![Page 54: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/54.jpg)
Recorte de Polígono contra Retângulo
�Casos Simples
�Casos Complicados (pode mudar topologia...)
![Page 55: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/55.jpg)
Algoritmo de Sutherland-Hodgman
� Idéia é semelhante à do algoritmo de Sutherland-Cohen
Recortar o polígono sucessivamente contra � Recortar o polígono sucessivamente contra todos os semi-espaços planos da figura de recorte
![Page 56: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/56.jpg)
� Polígono é dado como uma lista circular de vértices
� Vértices e arestas são processados em seqüência e classificados contra o semi-espaço plano corrente
Algoritmo de Sutherland-Hodgman
espaço plano corrente� Vértice:
� Dentro: copiar para a saída� Fora: ignorar
� Aresta� Intercepta semi-espaço plano (vértice anterior e posterior
têm classificações diferentes) : Copiar ponto de interseção para a saída
� Não intercepta: ignorar
![Page 57: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/57.jpg)
Algoritmo de Sutherland-Hodgman
ps
q r
![Page 58: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/58.jpg)
Algoritmo de Sutherland-Hodgman
ps
Vértice p -> fora
q r
![Page 59: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/59.jpg)
Algoritmo de Sutherland-Hodgman
ps
Vértice p -> foraVértice q -> fora
q r
![Page 60: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/60.jpg)
Algoritmo de Sutherland-Hodgman
ps
Vértice p -> foraVértice q -> foraVértice r -> dentro
q r
Vértice r -> dentroRegistra intersecção i entre q e r (estados diferentes)
i
![Page 61: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/61.jpg)
Algoritmo de Sutherland-Hodgman
ps
Vértice p -> foraVértice q -> for aVértice r -> dentro
q r
Vértice r -> dentroRegistra intersecção i entre q e r (estados diferentes)Vértice s -> dentro
i
![Page 62: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/62.jpg)
Algoritmo de Sutherland-Hodgman
ps
Vértice p -> foraVértice q -> for aVértice r -> dentro
j
q r
Vértice r -> dentroRegistra intersecção i entre q e r (estados diferentes)Vértice s -> dentroRegistra j entre s e p
i
![Page 63: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/63.jpg)
Algoritmo de Sutherland-Hodgman
ps
Vértice p -> foraVértice q -> for aVértice r -> dentro
j
q r
Vértice r -> dentroRegistra intersecção i entre q e r (estados diferentes)Vértice s -> dentroRegistra j entre s e p
i
![Page 64: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/64.jpg)
SR´s 2D
� SRO� SRU� SRW(recorte 2D)� SRV� SRD
![Page 65: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/65.jpg)
SR´s 3D
�SRO�SRU�SRC(recorte 3D)�SRP�SRV-SRD
![Page 66: Rasterização de primitivas 2D e Pipeline 2D - inf.pucrs.brsmusse/CG/PDF2013_2/RasterizacaoPipeline.pdf · Algoritmo de Cohen-Sutherland B F H • Calcular segmentos através A C](https://reader030.vdocuments.pub/reader030/viewer/2022020316/5b7bcc297f8b9ab87f8ec839/html5/thumbnails/66.jpg)