miércoles, 18 de septiembre de 2013

2.1 TRAZO DE LÍNEAS RECTAS.


Línea.
Una línea es una sucesión continua de puntos (trazado), como por ejemplo un trazo o un guion. Las líneas suelen utilizarse en la composición artística, se denomina en cambio «raya» a trazos rectos sueltos, que no forman una figura o forma en particular.

La línea es el elemento más básico de todo grafismo y uno de los sumamente utilizados. Representa la forma de expresión más sencilla y pura, que a la vez puede ser dinámica y variada.

Algoritmo DDA para generación de rectas.
El Algoritmo DDA es un algoritmo de línea de conversión de rastreo que se basa en el cálculo ya sea en el incremento de X o en el incremento de Y. La finalidad de este algoritmo es determinar los valores enteros correspondientes más próximos a la trayectoria de la línea para la otra coordenada.


Código:

void DDA(int x0,int y0,int xFin,int yFin)
{
int dx = xFin - x0, dy = yFin - y0, steps, k;
float xIncremento, yIncremento;
float x = x0, y = y0;
if (fabs (dx) > fabs (dy))
steps = fabs (dx); /* |m|<1>
else
steps = fabs (dy); /* |m|>=1 */
xIncremento=float(dx)/float (steps);
yIncrement = float (dy) / float (steps);
setPixel (round (x), round (y));
for (k = 0; k <>
{
x += xIncremento;
y += yIncremento;
setPixel (round (x), round (y));
}
}


Algoritmo de Bresenham para trazar líneas.

El algoritmo de Bresenham es un algoritmo creado para dibujar rectas en los dispositivos de gráficos rasterizados, como por ejemplo un monitor de ordenador, que determina qué pixeles se rellenarán, en función de la inclinación del ángulo de la recta a dibujar.
Es un algoritmo preciso para la generación de líneas de ratreo que convierte mediante rastreo las líneas al utilizar solo cálculos incrementales con enteros que se pueden adaptar para desplegar circunferencias y curvas. Los ejes verticales muestran las posiciones de rastreo y los ejes horizontales identifican columnas de pixel.

Si 0<|m|<1

· Se capturan los extremos de la línea y se almacena el extremo izquierdo en (x0,y0).
· Se carga (x0,y0) en el bufer de estructura (se traza el primer punto).
· Se calculan las constantes Δx,Δy, 2Δy y 2Δy-Δx y se obtiene el valor inicial para el parámetro de decisión p0=2Δy-Δx.

Para j=0 mientras j<Δx
En cada xk a lo largo de la línea, que inicia en k=0 se efectúa la prueba siguiente:
Si pk<0

· Trazamos (xk+1,yk).
· Asignamos pk+1= pk+2Δy.

Sino

· Trazamos (xk+1,yk+1).
· Asignamos pk+1= pk+2Δy-2Δx.

Fin Para
Si |m|>1

Recorremos la dirección en pasos unitarios y calculamos los valores sucesivos de x que se aproximen más a la trayectoria de la línea.


Conclusión:

Vemos que hay diferentes tipos de líneas y situaciones en que se dibujan, y se resuelven con técnicas diferentes. En este caso contamos con algunos algoritmos para generarlas y es más fácil gracias a OpenGL.

Bibliografía.

http://juangonzalezgraficacion.blogspot.mx/2012/02/trazo-de-lineas-rectas-y-poligonos.html
http://garciaoscar10110795.blogspot.mx/p/blog-page.html
http://lucia-barron-graficacion.blogspot.mx/2012/02/21-trazo-de-lineas-rectas-y-22.html
http://julian09110907.blogspot.mx/2012/02/graficacion-2d.html





No hay comentarios:

Publicar un comentario