Vous êtes sur la page 1sur 3

Dibujo de lneas y curvas

El tema anterior ha introducido objetos bsicos y transformaciones geomtricas


de los grficos por ordenador en dos dimensiones utilizando los principios de
grficos vectoriales. Como ya se mencion en la introduccin, dibujar objetos
geomtricos en un marco de grficos de trama requiere algoritmos eficientes.
Este tema ilustra los problemas bsicos y soluciones en el contexto de dibujar
lneas y curvas en grficos de trama.
Lneas y grficos de pxeles
Dibujar una lnea que une los puntos (x0, y0) y (x1, y1) dentro de un marco de
grficos de trama parece ser una tarea muy sencilla. Sin embargo, resultar
que un enfoque ingenuo puede conducir a algoritmos ineficientes o incluso a
resultados inaceptables. Por razones de simplicidad, es asumido que los dos
puntos estn conectados por la falsa lnea en la trama de pxeles. Esto significa
que sus coordenadas son dadas por valores enteros. Sin prdida de
generalidad es asumido que el primer punto no se encuentra a la derecha del
segundo punto. Esto significa que se encuentra que x0 <x1. Si esto no se
cumple, los dos puntos simplemente se pueden intercambiar para dibujar la
lnea.
El enfoque sencillo de trazar la lnea correspondiente en la trama de pxeles
pasara incrementalmente a travs de las coordenadas x iniciando en x0 y
terminando en x1 y calcular el valor correspondiente de y para cada valor de x.
Dado que el valor de y por lo general no ser un valor entero, debe ser
redondeado al valor entero ms cercano a fin de sacar el pxel ms cercano en
la trama con el x correspondiente y el valor de y redondeado.
En primer lugar, se debera sealar que este algoritmo fallara en el caso de
una lnea vertical donde se encuentra que x0 = X1, dando lugar a una divisin
por error cero cuando se calcula la pendiente m de la lnea. Por supuesto, este
caso especial podra ser fcilmente tratado por separado. Aunque el algoritmo
ya no tendr problemas con la divisin por cero todava fallara al dibujar lneas
aceptables como se puede ver en la Fig. 3.2. La superior, lnea horizontal es
tan perfecto como se puede esperar en grficos de trama. La lnea de abajo
con una pendiente ligeramente negativa tambin se traza correctamente en
trminos de grficos de trama, teniendo en cuenta que, al menos en ese
momento los pxeles tambin pueden dibujados de color negro completo o que
se pueden dejar en blanco. La lnea ideal que se aproxima por los pxeles
dibujados tambin est incluida en la figura para fines de ilustracin.
Sin embargo, la lnea en la parte inferior izquierda, con la pista muy negativo no
se dibuja correctamente, incluso en trminos de la desratizacin necesaria para
grficos de trama. Un nmero de pxeles son perdidos que deberan ser
dibujados por la representacin de grficos de trama de la lnea. El problema

es causado por el hecho de que el incremento de los valores de x es uno, pero


debido a la gran pendiente absoluta de la lnea del valor de y de la lnea
cambiar por ms de uno. Esto conduce al espacio en la representacin de la
lnea en grficos de trama, ya que los incrementos, o los saltos, en los valores
de y son ms grandes que uno. El mismo efecto se producir para todas las
lneas con una inclinacin absoluta mayor que uno. Cuanto mayor es la
pendiente de la lnea, mayores sern los espacios en la representacin de
pxeles.
El intercambio de los papeles de las direcciones x y el eje y para dibujar lneas
con una pendiente absoluta mayor que uno resuelve el problema. Esto significa
que en lugar de incrementar los valores de x por uno y el clculo del
correspondiente valor de y, los valores Y se incrementan y se calculan los
correspondientes valores de x redondeadas para la lnea.
Esto tambin resuelve el problema mencionado anteriormente de la divisin por
cero para las lneas verticales. Una lnea vertical con pendiente infinita se
convierte en una lnea horizontal con pendiente cero, cuando se intercambian
los ejes de coordenadas.
Trazar una lnea en una trama de pxeles es una tarea dentro de los grficos
por ordenador que tiene que ser llevada a cabo muchas veces incluso para una
sola imagen. Por lo tanto, se necesitan algoritmos de dibujo de lneas eficientes
para acelerar el dibujo de imgenes. Se podra utilizar el algoritmo de lnea de
dibujo simple que se describe en la Fig. 3.1 y extenderla por el intercambio
necesario de los ejes de coordenadas para lneas con pendiente absoluto
mayor que uno. Pero an hay dos opciones en la ltima lnea del
pseudocdigo. La primera frmula requiere solamente una sola adicin para
calcular el valor de y de la lnea para el siguiente paso. La segunda necesita
dos adiciones y una multiplicacin. Una multiplicacin exige ms tiempo de
clculo que una adicin. Por lo tanto, se debe preferir la primera versin para el
clculo del valor de y.
La nica desventaja de esta frmula es el peligro de los errores de redondeo
acumulados. Sin embargo, esto puede ignorarse, ya que el nmero de
iteraciones en el bucle est limitada por el nmero de pxeles en las direcciones
x y el eje y. As que, incluso en el caso de un monitor de alta resolucin mayor,
el bucle no puede contener ms de unos pocos miles de iteraciones. Debido a
que el redondeo a un nmero entero debe llevarse a cabo en el final de todos
modos, incluso el error de redondeo acumulado se puede ignorar.
El Algoritmo de lneas de punto medio
Dibujo de lneas pueden llevarse a cabo de una manera mucho ms rpido que
el algoritmo de lnea de dibujo simple de la seccin anterior. El algoritmo de
lnea de dibujo simple se basa en la aritmtica de punto flotante para la

determinacin de las coordenadas del pixel entero redondeadas. Dado que la


aritmtica de enteros es mucho ms rpido que la aritmtica de punto flotante,
una aceleracin considerable de la lnea de dibujo algoritmo podra lograrse, si
la aritmtica de punto flotante podra evitarse por completo. Un algoritmo de
dibujo lineal confa slo en la aritmtica de enteros que se introdujo por JE
Bresenham . Este algoritmo se explicar a continuacin.
Al examinar el algoritmo de dibujo lnea simple a detalle, ya fue sealado que
debera ser garantizado que la lnea que se extrae tiene una pendiente
absoluto de ms de uno. Para una lnea con pendiente absoluta mayor que
uno, los roles de los ejes de coordenadas se intercambian para la elaboracin,
dando lugar a una recta con pendiente absoluta inferior a uno en el sistema
modificado de coordenadas. As, en cualquier caso, antes de comenzar a
calcular los pxeles reales que representan una lnea, el primer paso es decidir
qu eje de coordenadas debe ser considerado como el eje x con el fin de
asegurarse de que la lnea tiene una pendiente absoluta de ms de uno. Por lo
tanto, se asume por las siguientes consideraciones que una recta con
pendiente absoluta de menos de uno debera ser dibujada. Las
consideraciones son incluso restringidas al caso que la pendiente es de entre 0
y 1. Para las lneas con una pendiente entre 0 y -1 un algoritmo
correspondiente puede ser desarrollado de forma anloga.

Vous aimerez peut-être aussi