Parcourir la source

feat: Coordonnées

Martin Passard il y a 7 ans
Parent
commit
4825f98ece
2 fichiers modifiés avec 72 ajouts et 0 suppressions
  1. 53 0
      src/data/Coordinates.java
  2. 19 0
      src/data/TestCoordinates.java

+ 53 - 0
src/data/Coordinates.java

@@ -0,0 +1,53 @@
+package data;
+
+public class Coordinates {
+	
+	/**
+	 * Cette Classe est là pour stoquer les atributs de coord
+	 */
+	
+	private double latitude,longitude;
+	
+	public Coordinates(double latitude,double longitude) {
+		this.latitude = latitude;
+		this.longitude = longitude;
+ 	}
+
+	public double getLatitude() {
+		return latitude;
+	}
+
+	public void setLatitude(long latitude) {
+		this.latitude = latitude;
+	}
+
+	public double getLongitude() {
+		return longitude;
+	}
+
+	public void setLongitude(long longitude) {
+		this.longitude = longitude;
+	}
+
+	/**
+	 * Cette methode mesure la distance entre deux points GPS. Cependant, cette mesure est aproximative, et ne prend pas en compte l'altitude.
+	 * Cette mesure de distance est faite a vol d'oiseau.
+	 * @param latitude2 Latitude avec laquelle mesurer
+	 * @param longitude2 longitude avec laquelle mesurer
+	 * @return Distance calculée en mètres.
+	 */
+	public double distanceAvec(double latitude2,double longitude2) {
+		final double EARTH_RADIUS = 6378137;  // Rayon en mètres de la terre
+		double rlat1 = Math.PI * latitude/180;
+		double rlat2 = Math.PI * latitude2/180;
+		double rlon1 = Math.PI * longitude/180;
+		double rlon2 = Math.PI * longitude2/180;
+		double dlon = (rlon2 - rlon1) / 2;
+		double dlat = (rlat2 - rlat1) / 2;
+		double a = (Math.sin(dlat) * Math.sin(dlat)) + Math.cos(rlat1) * Math.cos(rlat2) * (Math.sin(dlon) * Math.sin(dlon));
+		double dist = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
+		return dist * EARTH_RADIUS;
+		
+	}
+	
+}

+ 19 - 0
src/data/TestCoordinates.java

@@ -0,0 +1,19 @@
+package data;
+
+import java.util.Scanner;
+
+public class TestCoordinates {
+
+	
+	public static void main(String[] args) {
+		Scanner sc = new Scanner(System.in);
+		double lat1 = sc.nextDouble();
+		double lon1 = sc.nextDouble();
+		double lat2 = sc.nextDouble();
+		double lon2 = sc.nextDouble();
+		Coordinates c1 = new Coordinates(lat1, lat2);
+		double dist = c1.distanceAvec(lat2, lon2);
+		System.out.println("Distance estimée : "+dist);
+	}
+
+}