在Java中,如何为属于图的顶点指定坐标?
我正在为一个需要很快完成的项目构建一个简单的GPS。为此,我需要实现Dijkstra的算法,使汽车沿着特定的路径行驶,如图所示。该算法已经完成,功能正常,但我需要给顶点(交点)一些坐标,以便汽车知道去哪里 如何给出顶点的x和y坐标?我知道回答这个问题可能会很复杂,但任何帮助都将不胜感激。提前谢谢 顶点类代码如下。不要在意法国人(诺伊德):在Java中,如何为属于图的顶点指定坐标?,java,user-interface,graph,coordinates,dijkstra,Java,User Interface,Graph,Coordinates,Dijkstra,我正在为一个需要很快完成的项目构建一个简单的GPS。为此,我需要实现Dijkstra的算法,使汽车沿着特定的路径行驶,如图所示。该算法已经完成,功能正常,但我需要给顶点(交点)一些坐标,以便汽车知道去哪里 如何给出顶点的x和y坐标?我知道回答这个问题可能会很复杂,但任何帮助都将不胜感激。提前谢谢 顶点类代码如下。不要在意法国人(诺伊德): import java.util.ArrayList; import java.util.List; public class Noeud imp
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
}
}
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));
}
}