首页 > 解决方案 > 如何在Java中为属于图的顶点提供坐标?

问题描述

我正在为一个需要尽快完成的项目构建一个简单的 GPS。为此,我需要实现 Dijkstra 的算法以使汽车遵循一定的路径,请参见此处的图像。该算法已经完成并且可以运行,但是我需要给顶点(交叉点)一些坐标,以便汽车知道去哪里。

如何给顶点 x 和 y 坐标?我知道回答这个问题可能很复杂,但我们将不胜感激任何帮助。提前致谢。

顶点类代码如下。不要介意法语 (vertices --> noeud) :

    import java.util.ArrayList;
import java.util.List;
 
public class Noeud implements Comparable<Noeud> {
 
 private String numero;//identifier les noeuds
 private List<Route> listeVoisins;
 private boolean visiter;
 private Noeud predecesseur;//predecesseur du noeud
 private double distance = Double.MAX_VALUE; //distance depuis la source 
                                             //initialiser toutes les distances a l'nfini (max_value est la plus grande valeur possible)
                                             //il faut initiliaser la variable avec un valeur sinon elle sera mise a 0  
 
 public Noeud(String numero) {  //est appelé par la methode DijkstraMain
 this.numero = numero;
 this.listeVoisins = new ArrayList<>();
 }
 
 public void ajoutVoisin(Route route) {
 this.listeVoisins.add(route);
 }
 
 /*Getters & Setters*/
 public String getNumero() {
 return numero;
 }
 
 public void setNumero(String numero) {
 this.numero = numero;
 }
 
 public List<Route> getListeVoisins() {
 return listeVoisins;
 }
 
 public void setListeVoisins(List<Route> listeVoisins) {
 this.listeVoisins = listeVoisins;
 }
 
 public boolean estVisiter() {
 return visiter;
 }
 
 public void setVisiter(boolean visiter) {
 this.visiter = visiter;
 }
 
 public Noeud getPredecesseur() {
 return predecesseur;
 }
 
 public void setPredecesseur(Noeud predecesseur) {
 this.predecesseur = predecesseur;
 }
 
 public double getDistance() {
 return distance;
 }
 
 public void setDistance(double distance) {
 this.distance = distance;
 }
 
 @Override
 public String toString() {//permet d'afficher les noms
 return this.numero;
 }
 
 @Override    // We need this method if we want to use PriorityQueues instead of LinkedLists to store our edges
 public int compareTo(Noeud autreNoeud) {
 return Double.compare(this.distance, autreNoeud.getDistance());//remplacer getDistance par distnace
 }
}

这是创建顶点的Main 类:

public class DijkstraMain {
 

 public static void main(String[] args) {
 
 ///create vertices
 Noeud noeud1 = new Noeud("1");
 Noeud noeud2 = new Noeud("2");
 Noeud noeud3 = new Noeud("3");
 Noeud noeud4 = new Noeud("4");
 Noeud noeud5 = new Noeud("5");
 Noeud noeud6 = new Noeud("6");
 
 //Create graph
 //Route poids, noeud s name, noeud d name
 noeud1.ajoutVoisin(new Route(15,noeud1,noeud4)); 
 noeud1.ajoutVoisin(new Route(7,noeud1,noeud2));
 noeud2.ajoutVoisin(new Route(7,noeud2,noeud3));
 noeud2.ajoutVoisin(new Route(15,noeud2,noeud5));
 noeud3.ajoutVoisin(new Route(15,noeud3,noeud6));
 noeud4.ajoutVoisin(new Route(7,noeud4,noeud5));
 noeud5.ajoutVoisin(new Route(7,noeud5,noeud6));
 
 DijkstraAlgo cheminOptimal = new DijkstraAlgo();
 cheminOptimal.Algorithme(noeud1);
 
 System.out.println("Plus court chemin du point de départ vers l'intersection les autres intersections");
 
 System.out.println("\nDistance optimale vers l'intersection 2: "+noeud2.getDistance());
 System.out.println("Distance optimale vers l'intersection 3: "+noeud3.getDistance());
 System.out.println("Distance optimale vers l'intersection 4: "+noeud4.getDistance());
 System.out.println("Distance optimale vers l'intersection 5: "+noeud5.getDistance());
 System.out.println("Distance optimale vers l'intersection 6: "+noeud6.getDistance());
 
 System.out.println("\nLes chemins choisis");
 
 System.out.println("\nChemins choisis vers l'intersection 2: "+cheminOptimal.getShortestPathTo(noeud2));
 System.out.println("Chemins choisis vers l'intersection 3: "+cheminOptimal.getShortestPathTo(noeud3));
 System.out.println("Chemins choisis vers l'intersection 4: "+cheminOptimal.getShortestPathTo(noeud4));
 System.out.println("Chemins choisis vers l'intersection 5: "+cheminOptimal.getShortestPathTo(noeud5));
 System.out.println("Chemins choisis vers l'intersection 6: "+cheminOptimal.getShortestPathTo(noeud6));
 
 }
}

标签: javauser-interfacegraphcoordinatesdijkstra

解决方案


推荐阅读