Hola, estoy trabajando en un proyecto de clase, es un simulador de radar de espacio aéreo.
La idea es que cuando 2 vuelos se encuentran cerca, la imagen que representa el vuelo cambie. Y cuando está a una distancia prudente, vuelva a la imagen normal.
Código:
private void revisarConflictos(ArrayList<Vuelo> vuelosEnArea) {
for (int i = 0; i < vuelosEnArea.size(); i++) {
for (int j = i + 1; j < vuelosEnArea.size(); j++) {
Coordenada posicionVuelo1 = vuelosEnArea.get(i).getPosicionActual();
Coordenada posicionVuelo2 = vuelosEnArea.get(j).getPosicionActual();
double catetoX = Math.pow((posicionVuelo1.getPosicionX() - posicionVuelo2.getPosicionX()), 2);
double catetoY = Math.pow((posicionVuelo1.getPosicionY() - posicionVuelo2.getPosicionY()), 2);
double distancia = Math.sqrt(catetoX + catetoY);
if (distancia < 100) {
vuelosEnArea.get(i).establecerImagen(true);
vuelosEnArea.get(j).establecerImagen(true);
} else {
vuelosEnArea.get(i).establecerImagen(false);
vuelosEnArea.get(j).establecerImagen(false);
}
}
}
}
El método que estoy usando para establecer una imagen diferente es el siguiente.
Código:
public void establecerImagen(boolean conflicto) {
try {
if (conflicto) {
imagen = ImageIO.read(this.getClass().getResource("avion_rojo.png"));
} else {
imagen = ImageIO.read(this.getClass().getResource("avion_azul.png"));
}
}
catch (IOException ex) {
Logger.getLogger(Vuelo.class.getName()).log(Level.SEVERE, null, ex);
}
}
El problema que tengo con esto, es que en ocasiones uno de los vuelos no está recibiendo el cambio de imagen o ignora a los demás.
No he podido encontrar el problema, en cuanto a la comparación de las distancias o si puede ser algo mas.
Gracias por su ayuda.