Trazado de Curvas en Dispositivos Gráficos Matriciales
Trazado de Curvas en Dispositivos Gráficos Matriciales
Trazado de Curvas en Dispositivos Gráficos Matriciales
(xi,yi)
(xi,Round(yi))
Algoritmo incremental básico
yi=mxi + B i
yi+1=mxi+1 + B =m(xi +x)+ B= yi + mx
Si x=1 yi+1= yi + m
(xi+1,Round(yi +m))
(xi,yi)
(xi+1,yi +m)
(xi,Round(yi))
Algoritmo incremental básico
Algoritmo incremental básico
Algoritmo del punto medio
<0
=0
NE
Q >0
M
P=(xp,yp) E
Opciones Opciones
Pixel para Pixel para Pixel
anterior actual siguiente
Algoritmo del punto medio
La representación explícita de la recta:
dy = y2 – y1; dx = x2 - x1
y=(dy/dx)·x + B
P=(xp,yp) E
NE
Q
M
P=(xp,yp) E
Dibujo (x0,y0)
Defino dnuevo= a + b/2
p=0
Mientras no llegué a xfin
Según el signo de dnuevo
elijo y dibujo (xp+1,yp+1) M dnuevo
p=p+1
Fin
Repaso Algoritmo del punto
medio
El problema es que dinicio= a + b/2, por lo que hay una fracción
inicial que perjudica todos los cálculos posteriores.
Conclusiones:
Para cada paso, dnuevo se calcula a partir de una suma entera.
El algoritmo se puede generalizar para líneas con pendientes que
no estén entre 0 y 1.
Conversión matricial para
circunferencias
• Existen muchos abordajes para el trazado
de circunferencias
– En algoritmos simples no incrementales un
polígono de n lados es usado como
aproximación para una circunferencia
– Cuanto mayor sea el valor de n mas lento será
el proceso
Conversión matricial para
circunferencias
Ecuación del círculo centrado en el origen:
X2 + y2 = R2
Función explícita:
y = f(x) entonces para la circunferencia
y=±sqrt(R2-x2)
y al discretizar queda:
y=round(±sqrt(R2-x2))
Problemas en la forma tradicional de
discretización de círcunferencias
Precisa utilizar raiz cuadrada y redondeo
Uso de punto flotante
Dibujo de la circunferencia con huecos
Simetría de 8 lados
Algoritmo de simetría de orden 8
Algoritmo del circulo de punto
medio para circunferencias
P=(xp,yp) E
M ME
>0
SE
MSE
=0
<0