Raster CIRCULO
Raster CIRCULO
Raster CIRCULO
RASTER II
C o m p uta c i ó n G r á fica
Midpo int Line Algorithm
Bresenham (1965)
Se extiende a círculos.
Previous Choices Choices Si M, el punto medio entre NE y E, está abajo de la línea, elegimos E, si está
pixel for current for next
pixel pixel arriba elegimos NE.
Se puede verificar que F(x,y) es cero sobre la línea, positiva bajo la línea y negativa para puntos
sobre la línea.
F (x, y) = ax + by + c = 0
Midpo int LinedyAlgorithm
y= x+B
dx
F (x, y) = dy · x dx · y + B · dx = 0
⇥
1
Necesitamos solamente calcular F (M ) = F xp + 1, yp +
2
y verificar el signo.
Nótese que esta versión del algoritmo funciona para pendientes entre 0 y 1.
void MidpointLine( int x0, int y0, int x1, int y1, int value )
{
int dx = x1-x0;
int dy = y1-y0;
int d = 2*dy-dx; /* valor inicial de d */
int incrE = 2*dy; /* incremento para E */
int incrNE = 2*(dy-dx); /* incremento para NE */
int x = x0;
int y = y0;
while( x < x1 ){
if( d <= 0 ){ /* choose E */
d += incrE;
x++;
} else { /* choose NE */
d += incrNE;
x++;
y++;
}
WritePixel(x,y,value); /* the selected pixel */
} /* while */
} /*MidpointLine */
P1 = ( x, y) P5 = (-x,-y)
P2 = ( y, x) P6 = (-y,-x)
P3 = (-y, x) P7 = ( y,-x)
P4 = (-x, y) P8 = ( x,-y)
x = rcosθ, y=rsinθ.
P2
P4
P1 P3
s3
s2 s4 s5 s2
s4
autointersección
P1 P5 s1 s3
P3
s1 s6
P0 = P4 P2
P0 = P6
I M
17
Polígonos convexos
M M’ M M’
Principio de rellenado de polígonos
4
C
Haciendo eso de manera iterativa para 3
1 2 3 4 5 6 7 8 9 10 11 12 13