jueves, 13 de septiembre de 2012

Generacion de lineas rectas


LINEA

Es el medio gráfico fundamental para representar las formas que nos rodean y las ideas, creando un lenguaje que no necesita palabras. Es el elemento visual más importante del dibujo. Tiene la facultad de transmitir sensaciones ya sea por su forma o por su disposición, solas o agrupadas.

 Líneas rectas: Expresan robustez y rigidez
 Líneas curvas: Sugiere movimiento, vitalidad, suavidad, delicadeza.
 Líneas horizontales: Expresan calma, reposo, tranquilidad, peso, estabilidad. Hacen las   cosas más anchas y extensas.
 Líneas verticales: Nos transmiten fuerza, orden, equilibrio, movimiento ascendente o descendente, elegancia, espiritualidad. Producen el fenómeno visual de alargar las cosas.
 Líneas oblicuas: Expresan inestabilidad, acción, caída, caos, desorden, confusión, sensación de profundidad y alejamiento.
 Líneas quebradas: Producen el efecto de incertidumbre,  indecisión. Una sensación similar a la ro-tura, la fragmentación.
 Líneas radiales o concurrentes: Sugieren luminosidad, explosión, asombro, dispersión, profundidad.

ALGORITMO DDA PARA GENERACION DE RECTAS

Este Algoritmo sirve para Generar Una Línea Recta, y Para eso Hace Uso de La pendiente Y de los Incrementos en X, Y.
Como todos saben Open GL es una herramienta que nos facilita mucho la generación de gráficos por computadora. Aquí aplicamos conocimientos matemáticos, usando Open GL para generar rectas, circunferencias, elipses, etc. 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.

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. El algoritmo de Bresenham sirve para trazar una línea entre dos puntos.

void Bres(int x0,int y0,int xFin,int yFin){
int dx = fabs(xFin - x0),
dy = fabs(yFin - y0);
int p = 2 * dy - dx;
int dosDy = 2 * dy,
dosDyMenosDx = 2 * (dy - dx);
int x, y;
if (x0 > xFin) {
x = xFin;
y = yFin;
xFin = x0;
}
else {
x = x0;
y = y0;
}
setPixel (x, y);
while (x <>
x++;
if (p <>
p += dosDy;
else {
y++;
p += dosDyMenosDx;
}

setPixel (x, y);

}

}

CIRCUNFERENCIA

Se conoce como circunferencia a la línea cerrada de formato curva y apariencia plana en la cual los puntos resultan equidistantes del punto central que se localiza en el mismo plano. Esta distancia que separa al conjunto de puntos y al área central se conoce como radio, mientras que el segmento de recta que compone un par de radios alineados recibe el nombre de diámetro.

ALGORITMO DE BRESENHAM PARA TRAZAR CIRCUNFERENCIAS

Los dos procedimientos planteados en esta sección utilizan demasiadas operaciones, sobre todo de aritmética de punto flotante, cuando deseamos trazar cientos de círculos, comenzamos a pensar en que debemos encontrar una forma más eficiente de hacerlo.

Estamos de acuerdo en que si somos capaces de trazar el circulo en el origen, moverlo de manera en que su centro quede ubicado en (xc; yc) implica simplemente sumar xc a todas las coordenadas x y sumar yc a todas

No hay comentarios:

Publicar un comentario