Linea
Una marca
delgada hecha por un esferográfico o un lápiz etc.
En geometría una línea:
· es recta (sin curvas),
· no tiene grosor, y
· se extiende en ambas direcciones sin tener un final (infinitamente).
Si tuviera fin se llamaría "segmento de línea".
"Línea" normalmente significa recta, así que di "curva" si tiene una curva.
En geometría una línea:
· es recta (sin curvas),
· no tiene grosor, y
· se extiende en ambas direcciones sin tener un final (infinitamente).
Si tuviera fin se llamaría "segmento de línea".
"Línea" normalmente significa recta, así que di "curva" si tiene una curva.
Algoritmo
DDA para Generacion de Rectas
Algoritmo
DDA para generación de líneas
Como todos saben Open GL es una herramienta que nos facilita mucho la generación de gráficos por computadora. Aqui aplicamos conocimientos matemáticos, usando Open GL para generar rectas, corcunferencias, elipses, etc.
Como todos saben Open GL es una herramienta que nos facilita mucho la generación de gráficos por computadora. Aqui aplicamos conocimientos matemáticos, usando Open GL para generar rectas, corcunferencias, elipses, etc.
DDA:
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));
}
}
BRESENHAM:
El algoritmo de
Bresenham sirve para trazar una línea entre dos puntos.
Código:
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;
/* Determinamos que
punto usamos como inicio. */
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
La circunferencia
es una línea curva, plana y
cerrada
La circunferencia sólo posee longitud. Se distingue del círculo
en que éste es el lugar geométrico de los puntos contenidos en una circunferencia
determinada; es decir, la circunferencia es el perímetro
del círculo cuya superficie contiene.
Puede ser considerada como una elipse de excentricidad nula, o una
elipse cuyos semiejes son iguales. También se puede describir como la sección,
perpendicular al eje, de una superficie cónica o cilíndrica,
o como un polígono
de infinitos lados, cuya apotema coincide con su radio.
La circunferencia de centro en el origen de coordenadas y radio 1 se denomina circunferencia unidad o circunferencia goniométrica
Algoritmo de Bresenham para trazar circunferencias
El programa debe trazar un circulo
cada que el usuario agregue dos puntos.
El usuario debe introducir con el
ratón dos puntos p0
y p1 para trazar el
circulo. El primero, que representa el centro
del circulo p0 = (cx; cy) y el segundo, desde
el cual se puede calcular el radio d(p0; p1) = r. Es decir, el primero es el
centro y el otro es un punto en la
circunferencia.
Se deben de poder trazar círculos
parciales. Es decir, puede suceder que algunos de los puntos del circulo caigan
fuera de la pantalla, en ese caso el
programa debe de poder trazar la parte visible del circulo.
Sugerencia para mejorar el programa.
Por calificación extra puede tratar de generalizar el algoritmo de Bresenham
para que pueda trazar elipses (El
algoritmo solo funciona para trazar elipses alineadas a los ejes). Recuerde que
si en clase
se dedujo el algoritmo del circulo a
partir de la ecuación x2
+ y2 = r2, se puede deducir el
de la elipse a partir de la
ecuación x a_2 yb_2= 1. Donde a y b son
los radios de la elipse con respecto a los ejes.
Puede consultar como bibliografía [2]
Y para darse idea de como se puede hacer la interfaz de usuario puede ver como
operan los programas como Inkscape o Ilustrator
el trazo de círculos y elipses. Con esto en mente puede intentar el trazador
No hay comentarios:
Publicar un comentario