graficas primitivas
Transcript of graficas primitivas
1
1
Primitivas Gráficas
Discretización
2
Primitivas Gráficas
• PuntosSe definen por su posición y color.
• Segmentos de rectaSe definen por las coordenadas de sus extremos.
• CircunferenciasSe definen por las coordenadas del centro y el radio.Incluyen arcos de circunferencia y elipses.
• PolígonosSe definen con las coordenadas de sus vértices.
2
3
Técnicas de Discretización
Técnicas basadas en la ecuación diferencial:DDA (Digital Diferential Analisis) evalúa la ecuacióndiferencial de la primitiva a graficar en intervalosdiscretos.
Técnicas basadas en el análisis de error:Bressenham:a partir de cada pixel de la discretizacióndetermina cual es el próximo pixel que minimiza el errorque se genera al discretizar.
4
Discretización de rectas(Scan Converting Lines)
Línea definida del pixel (x0,y0) al (x1,y1)
Pendiente de la recta (es un número real)
0101
xxyy
xy
dxdy
m−−
=∆∆
==
3
5
•Camina a lo largo del eje x desde X0 hasta X1.
•Para cada valor de Xi calcula Yi y lo redondea alpixel más próximo.
•El cálculo de Yi+1 puede hacer incrementalmentecomo Yi+1= Yi + m lo que equivale a incrementara X en 1.
Sustituyendo las coordenadas de los extremos:
Y simplificando:
DDA Digital Differential Analizer
Bxmy
Bxmy
ii
ii
++=
+=
+ )1(*
*
1
myy ii +=+1
6
DDA Digital Differential Analizer
Algoritmo:void rectaDDA(int x0, int y0, int x1, int y1, int color){ int x; float dy, dx, y, m;
dy = y1 - y0; dx = x1 - x0; m = dy / dx; y = y0;
for( x = x0; x <= x1; x++ ) { setPixel( x, (int) floor( y+0.5 ), color); y += m; } }
floor(x): devuelve el mayor entero que sea menor o igual que x.
4
7
Extensión por simetría
1
0
0
>∆∆
<∆<∆
x
y
x
y A
B
C
8
Desventajas de DDA
• Requiere aritmética de punto flotante (valores reales), la que es máslenta y costosa.
• Es inapropiado para implementar por hardware (aritmética real).
• El redondeo es una operación real adicional.
• Las líneas largas pueden verse afectadas por el error de redondeo en m
5
9
Midpoint (Bresenham's) Algorithm•No requiere función de redondeo.
•No usa operaciones aritméticas de punto flotante.
•Es incremental (usa el resultado del cálculo anterior)
•El pixel seleccionado previamente es (xp,yp)
•Hay dos elecciones posibles para el próximopixel E (este) y D (diagonal)
•Q es la intersección de la línea a dibujar y lalínea de la grilla x= xp + 1
10
Segmento de recta porBresenham
Este método fue se basa en analizar el error entre el segmento de rectay la discretización del segmento.Sea P un punto de la discretización, entonces el próximo pixel solopuede ser E o D y la decisión de ir a E o a D se toma de acuerdo alerror que se comete en cada paso
• P
• D
• E
x
y
6
11
Segmento de recta porBresenham
El error es la distancia entre el centro del pixel y el segmento de recta,medido en dirección del eje y positivo del espacio de pantalla, o seahacia abajo.Si el error en P es e, habra que actualizar el error para el siguientepixel como:
Si se elige E e = e + m
Si se elige D e = e + m-1
• •
•
m
1
x
y
12
Segmento de recta porBresenham
Cómo elegimos entonces el siguiente pixel?
Si e+m > 0.5entonces elegir Dsino elegir E.
Para economizar el cómputo, se toma e0 =m-0.5, y e= e0 entonces
si es e > 0entonces elegir Dsino elegir E
7
13
Segmento de recta porBresenham
Otra economía: 5.05.00 −∆∆=−=
xy
me
Como se testea el error por cero, se puede multiplicar por 2∆xsin alterar la inecuación, entonces queda:
xye ∆−∆= 20 yee ∆+= 2
xyee ∆−∆+= 22
Paso E
Paso D
Desde esta forma todas las operaciones son sumas y restas enteras
14
Segmento de recta porBresenham
Algoritmo:
;
;
;
;
;1
0
;
);,(
)(
2;2
;;;;;
10
000101
end
end
end
ixee
yy
theneif
iyee
yxputpixel
hacerxxhastaxxfor
dyiydxix
dxiyeyyxxyydyxxdx
−=+=>
+=
====
−===−=−=