equipo 1 trazo de lineas rectas
TRANSCRIPT
2.1 TRAZO DE LINEAS RECTAS
EQUIPO 1
¿Qué es una línea recta? la recta o línea recta, se extiende en una misma dirección, existe en una sola dimensión
y contiene infinitos puntos; está compuesta de infinitos segmentos (el fragmento de línea más corto que une dos puntos). También se describe como la sucesión continua e indefinida de puntos en una sola dimensión, o sea, no posee principio ni fin.
Direccion 1 sola dimencion Camino mas corto entre 2 puntos Sucesion de puntos
tambienLa línea es el elemento básico de todo
grafismo y uno de los más usados. Representa la forma de expresión más sencilla y pura, pero también la más dinámica y variada.
Algoritmo de Bresenham para trazar líneas
Un algoritmo preciso y efectivo para la generación de líneas de rastreo, desarrollado por Bresenham (1965),
Trazado de líneas
Diferentes tipos de líneas y situaciones en que se dibujan se resuelven con técnicas diferentes.
- Líneas cortas, o líneas que corren paralelas a otras que nos sirven de referencia.
- Líneas largas. Es el caso de líneas que unen dos puntos alejados, sin ninguna otra referencia. Las primeras líneas de cualquier croquis entran en esta categoría.
Líneas cortas o líneas paralelas a otras ya existentes se las puede dibujar de un solo trazo. Primero se deben mirar bien los puntos de inicio y terminación para luego ejecutar el trazo.
Para el trazado de líneas largas vamos a dar tres técnicas que se utilizarán según las circunstancias.
Líneas punto a punto
La técnica más rápida es, una vez determinados los puntos a unir se comienza moviendo el lápiz desde uno de ellos hacia el otro. Mientras se hace este movimiento se debe mantener la vista sobre el punto de destino. Esto último nos permitirá conservar la dirección.
Líneas compuestas
Una segunda técnica es proceder mediante trazos de cinco a siete centímetros; como si se estuviesen dibujando una sucesión de líneas más cortas. La interrupción del trazo permite verificar el rumbo del trazo y se corregir si es necesario. Los trazos sucesivos no se superponen a fin de posibilitar uniformidad de espesor. Se deja una pequeñísima luz entre ellos de forma tal que apenas resulte perceptible la interrupción y mantenga el espesor uniforme
Líneas de construcción
Una tercera técnica, particularmente aplicable cuando se está planteando el dibujo, es utilizar líneas de tanteo. Resulta un poco más lenta que las anteriores, pero es de gran ayuda para obtener líneas rectas particularmente cuando son muy largas. Consiste en insinuar la línea en forma apenas visible con trazos muy suaves. Idealmente, solo el dibujante debería percibir esos trazos de tanteo. Se observa el resultado obtenido. Se introducen las correcciones necesarias hasta lograr definir el trayecto correcto. Entonces se comienza el trazado de la línea en forma similar al primer método, pero ahora con una guía visual. Si fuese necesario, porque se utilizaron demasiadas líneas de tanteo, se podrán borrar las que no sirven, antes del trazado definitivo
TRAZO DE LÍNEAS RECTAS
Las líneas en OpenGL son en realidad segmentos acotados, en lugar de la idea matemática de rectas infinitas. Su definición viene dada por la especificación del valor de sus dos vértices extremos.
Consideremos una línea recta que pasa por dos puntos P1=[20, 20] y [25,20]. Podemos calcular la línea recta que pasa por estos puntos como
(y-y1) = (y2-y1)*(x-x1)/(x2-x1)
Sustituyendo los valores tenemos
(y-20) = (21-20)*(x-20)/(25-20)
Finalmente tenemos
y = 0.2 x + 16
Podemos calcular los valores utilizando el siguiente código
void linea(int x0, int y0, int x1, int y1)
{ int x;
float dy, dx, y, m;
dy = y1 - y0;
dx = x1 - x0;
m = dy/dx;
y = y0;
for(x = x0; x <= x1; x++)
{ escribir_pixel(x, (int) floor(y+0.5) );
y +=m; } }
Note que se suma 0.5 y se calcula la parte entera para redondear la solución.
Podemos calcular los valores utilizando el siguiente códigovoid linea(int x0, int y0, int x1, int y1)
{ int x;
float dy, dx, y, m;
dy = y1 - y0;
dx = x1 - x0;
m = dy/dx;
y = y0;
for(x = x0; x <= x1; x++)
{ escribir_pixel(x, (int) floor(y+0.5) );
y +=m; } }
Note que se suma 0.5 y se calcula la parte entera para redondear la solución