Foros del Web » Programación para mayores de 30 ;) » Java »

Guardar puntos de una línea

Estas en el tema de Guardar puntos de una línea en el foro de Java en Foros del Web. Hola forer@s, mi problema es el siguiente. Resumiendo, estoy dibujando unas líneas en un JFrame a partir de dos puntos dados, y necesito saber todos ...
  #1 (permalink)  
Antiguo 24/08/2011, 14:06
 
Fecha de Ingreso: agosto-2011
Mensajes: 2
Antigüedad: 12 años, 8 meses
Puntos: 0
Guardar puntos de una línea

Hola forer@s,

mi problema es el siguiente. Resumiendo, estoy dibujando unas líneas en un JFrame a partir de dos puntos dados, y necesito saber todos los puntos que contienen la línea; he pensado en un array de puntos(x,y). Tengo una idea, de aplicar la ecuación de la recta y-y1=m(x-x1) para ir sacando esos puntos, pero me surgen algunas dudas...que ni me termino de aclarar.

Lo que he hecho es, coger las coordenadas menores, para recorrer la línea de menor a mayor siempre, se pinte como se pinte. Luego, recorro con el bucle hasta llegar a la coordenada final, y voy guardando los valores calculados con la ecuación de la recta en el array de puntos.

Este código tiene plasmada esa idea...pero no funciona xD. No se si por fallo de idea (que estoy seguro que es super ineficiente) o por fallo de programación de la idea.

Dejo el código abajo, a ver si alguien tiene alguna inspiración mejor que la que tengo yo...

Muchas gracias !!



public class Punto {

int x,y;

public Punto(int x, int y) {
this.x= x;
this.y= y;

}
}

public class Line {

public int x1;
public int y1;
public int x2;
public int y2;
public Color color;
public Punto[] p_rec;

public Line(int x1, int y1,int x2, int y2, Color color, Punto[] puntos){


this.x1 = x1;
this.x2 = x2;
this.y1 = y1;
this.y2 = y2;
this.color = color;
p_rec = new Punto[Math.abs(x2-x1)];
ecRecta();
}

private void ecRecta(){

int m = Math.abs((y2 - y1)/(x2 -x1)); //pendiete de la recta, en valor absoluto
int mayor_x,menor_x,mayor_y,menor_y,x_recorre,auxY=0,a uxX=0,i=0;


/*Compruebo que punto es mayor, para luego en el bucle recorrar de un punto a otro en crecente */

if (x2>x1){
mayor_x = x2;
menor_x = x1;
mayor_y = y2;
menor_y = y1;
}else{
mayor_x = x1;
menor_x = x2;
mayor_y = y2;
menor_y = y1;
}


//Inicializo variable x_recorre a la menor

x_recorre = menor_x;
while (x_recorre<mayor_x)
auxX = x_recorre;
auxY = m*(menor_x - x_recorre) + menor_y; //Ecuación de la recta

this.p_rec[i].x = auxX;
this.p_rec[i].y = auxY;

i++;
x_recorre++;
}

}

Etiquetas: puntos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:52.