package gps; import java.util.HashMap; /* sommets * les sommets sont stockés dans une table * et repérés par un entier unique (champ id) */ class Vertex { final int id; final double lon, lat; // en radians private Vertex(int id, double lat, double lon) { this.id = id; this.lon = Math.toRadians(lon); this.lat = Math.toRadians(lat); } // table contenant tous les sommets private static final HashMap<Integer, Vertex> nodes = new HashMap<Integer, Vertex>(101327); static void create(int id, double lat, double lon) { nodes.put(id, new Vertex(id, lat, lon)); } static Vertex fromId(int id) { return nodes.get(id); } // distance orthodromique double distance(Vertex that) { return 6378 * Math.acos(Math.cos(this.lat) * Math.cos(that.lat) * Math.cos(this.lon - that.lon) + Math.sin(this.lat) * Math.sin(that.lat)); } public String toString() { return "lat " + this.lat + ", long " + this.lon; } // utilisé dans Graph pour construire un point temporaire de coordonnées données Vertex(double lat, double lon) { this.lat = lat; this.lon = lon; this.id = -1; } }