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.