independencia
Algoritmo basado en la ecuación de la recta
Algoritmo básico
Elalgoritmo básico utiliza la ecuación de la recta expresada como
y = mx + b
Si la recta se dibuja desde el punto (x0, y0) hasta el punto (x1, y1), el algoritmo varia x desde x0 hasta x1 en incrementos de unaunidad. El siguiente es el código en Java.
public void rectaSimple(int x0, int y0, int x1, int y1, Graphics g){
int dx = x1 - x0;
int dy = y1 - y0;
g.drawLine( x0, y0, x0,y0);//funciona!!
if (dx != 0){
float m = (float) dy / (float) dx;
float b = y0 - m*x0;
if(x1 > x0)
dx = 1;
else
dx = -1;
while (x0 != x1) {
x0 += dx;
y0 =Math.round(m*x0 + b);
g.drawLine( x0, y0, x0, y0);
}
}
}
El siguiente applet permite ver el proceso paso a paso. Seleccione dos puntos sobre la cuadrícula y presione el botón"Siguiente" para ejecutar cada paso. Para borrar presione el botón "Borrar". Note que para pendientes mayores de 45° o menores de -45° el algoritmo dibuja rectas discontinuas.
Algoritmo básico para cualquierpendiente
El siguiente algoritmo es una mejora sobre el anterior. el algoritmo dibuja rectas con cualquier pendiente.
public void rectaSimple2(int x0, int y0, int x1, int y1, Grtaphics g){
int dx = x1 - x0;
int dy = y1 - y0;
g.drawLine( x0, y0, x0, y0);
if (Math.abs(dx) > Math.abs(dy)) { // pendiente < 1
float m = (float) dy/ (float) dx;
float b = y0 - m*x0;
if(dx= 1
float m = (float) dx / (float) dy; // compute slope
float b = x0 - m*y0;
if(dy x1) { x = x1;
y = y1;
xend = x0;
}
else {
x = x0;
y = y0;
xend = x1;
}
g.drawLine( x0, y0, x0, y0);
/* se cicla hasta llegar al extremo de la línea */
while (x...
Regístrate para leer el documento completo.