Está en la página 1de 3

INGLES VI

Dibujo de lneas y curvas


En el captulo anterior se han introducido los objetos bsicos y
transformaciones geomtricas para grficos por ordenador en bidimensional
utilizando los principios de los grficos vectoriales. Como ya se mencion en la
introduccin, dibujar objetos geomtricos en una estructura de grficos de
trama requiere de algoritmos eficientes. Este captulo ilustra los problemas
bsicos y soluciones en el contexto de dibujar lneas y curvas en grficos de
trama.

3.1 Las lneas y grficos de pxeles


Dibujar una lnea que une los puntos (x 0, y0) y (x1, y1) dentro de la estructura de
los 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, se supone que los dos
puntos se conecten por la misma lnea en la trama de pxeles. Esto significa
que sus coordenadas son dadas por valores enteros. Sin prdida de
generalidad se supone que el primer punto no se encuentra bien con respecto
al segundo punto. Esto significa que x 0 x1. Si esto no se satisface, los dos
puntos simplemente no pueden compartir la lnea que se dibuja.
El enfoque ingenuo trazar la lnea correspondiente en el trama de pxeles que
paso gradualmente a travs de las x- coordenadas a partir de x0 y terminando
en x1 y calcular el correspondiente valor para cada valor 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 los ejes
x correspondiente y el valor de y redondeado. Figura 3.1 describe esta
estrategia en pseudocdigo.
En primer lugar, cabe sealar que el algoritmo producir un error en el caso de
que una lnea vertical donde x0 = x1, la cual conduce a un error en la divisin
por 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 este todava no podr dibujar lneas
aceptables como puede verse en la fi gura 3.2. La lnea superior en horizontal
es tan perfecta como se puede esperar en grficos de trama. La lnea de abajo
con una pendiente ligeramente negativa seala tambin correctamente en
trminos de grficos de trama, teniendo en cuenta que, al menos en los pxeles
momento- Puede extraerse de color negro completo o que se puede dejar en
blanco.

Figura 3.1 Pseudocdigo para un algoritmo de lnea de dibujo ingenuo.


Figura 3.2 Lneas resultantes del algoritmo de lnea de dibujo ingenuo.

La lnea ideal que se aproxima a los pxeles dibujados tambin se incluye en la


figura con fines ilustrativos.

Sin embargo, la lnea en la parte inferior izquierda, en la posicin negativa no


se dibuja correctamente, incluso en trminos de la discretizacin necesaria
para los grficos de trama. Una falta en el nmero de pxeles se debe a que
debe ser elaborado por la representacin de la lnea en los grficos de trama.
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 y el valor de la
lnea cambiar por ms de uno. Esto conduce a dejar espacio en la
representacin de la lnea en los grficos de trama, ya que los incrementos, o
los saltos, en los valores de y son ms grandes que uno. El mismo efecto
ocurrir para todas las lneas con un pendiente absoluto mayor que uno.
Cuanto mayor es la pendiente de la lnea, mayores sern los vacos 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 calcular el valor
correspondiente de y, en el que los valores se incrementan y los valores
correspondientes de x se calculan para la lnea. Esto tambin resuelve el
problema mencionado anteriormente de la divisin por cero para las lneas
verticales. Una lnea vertical con la 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 las imgenes de dibujo.
Se podra utilizar el algoritmo de lnea de dibujo ingenuo que describe en figura
3.1 y extenderla por el necesario intercambio 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 (suma) para calcular el
valor de y de la lnea en el siguiente paso. El segundo paso necesita dos
adiciones (sumas) 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 que en la ronda acumule errores.
Sin embargo, esto puede despreciarse, ya que el nmero de iteraciones en el
bucle est limitado por el nmero de pxeles en las direcciones de los ejes (X) y
(Y). As que, incluso en el caso de un monitor de mayor y alta resolucin, 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 al final de todo,


incluso en la ronda el acumulo de error se puede despreciar.

3.2 El algoritmo de punto medio para las lneas


Dibujo de lneas pueden llevarse a cabo de una manera mucho ms rpido que
el algoritmo de lnea de dibujo ingenuo de la seccin anterior. El algoritmo de
lnea de dibujo ingenuo se basa en la aritmtica de punto flotante para la
determinacin de pxel entero redondeado coordina.
Desde la aritmtica de enteros es mucho ms rpido que fl punto flotante
aritmtica, una considerable aceleracin del algoritmo de dibujo de lnea se
podra lograr, si la aritmtica de punto flotante podra evitarse por completo.
Un algoritmo de dibujo lineal confiar slo en la aritmtica de enteros se
introdujo por JE Bresenham [1].
Este algoritmo se explicar a continuacin. Al examinar la lnea ingenua
algoritmo de dibujo en detalle, ya se seal que debe garantizarse que la lnea
que se extrae tiene una pendiente en absoluto de lo ms una. Para una recta
con pendiente absoluta superior a uno, los roles de los ejes de coordenadas se
intercambian para el dibujo, lo que lleva a una recta con pendiente absoluta de
menos de uno en la modificacin del sistema 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 a lo sumo uno.
Por lo tanto, se asume por las siguientes consideraciones que una recta con
pendiente absoluta de menos de uno hay que sacar. Las consideraciones son
incluso restringido 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.

También podría gustarte