package pi1.blatt4; /** Blatt 4 Aufgabe 4 * @author Holger Fuessler> * @version $Id$ */ public class GeoCoordinate { /** mean earth radius */ final static double EARTH_MEAN_RADIUS = 6317000.0; /** latitude, breitengrad */ private Angle lati; // breite, /** longitude, laengengrad */ private Angle longi; // laenge, /** Constructor */ public GeoCoordinate(Angle lati, Angle longi) { this.lati = lati; this.longi = longi; } public double getXCoordinate() { double phi = (Math.PI / 2.0) - lati.getAsRad(); double theta = longi.getAsRad(); return(EARTH_MEAN_RADIUS * Math.cos(theta) * Math.sin(phi)); } public double getYCoordinate() { double phi = (Math.PI / 2.0) - lati.getAsRad(); double theta = longi.getAsRad(); return(EARTH_MEAN_RADIUS * Math.sin(theta) * Math.sin(phi)); } public double getZCoordinate() { double phi = (Math.PI / 2.0) - lati.getAsRad(); return(EARTH_MEAN_RADIUS * Math.cos(phi)); } public String toString() { return String.format("[%g,%g] [%d,%d,%d]", lati.getAsGrad(), longi.getAsGrad(), Math.round(getXCoordinate()), Math.round(getYCoordinate()), Math.round(getZCoordinate())); } public static void main(String[] args) { for (double lati = -90.0; lati <= 91.0; lati += 30) { System.out.println(">>>> New Latitude (Breite): " + lati); for (double longi = -180; longi <= 181; longi += 30) { Angle latiAngle = Angle.createWithGrad(lati); Angle longiAngle = Angle.createWithGrad(longi); System.out.println((new GeoCoordinate(latiAngle, longiAngle))); } } Angle latiAngle = Angle.createWithGrad(90); Angle longiAngle = Angle.createWithGrad(0); System.out.printf("\n\nNorth Pole: %s\n", (new GeoCoordinate(latiAngle, longiAngle))); latiAngle = Angle.createWithGrad(-90); longiAngle = Angle.createWithGrad(0); System.out.printf("South Pole: %s\n", (new GeoCoordinate(latiAngle, longiAngle))); } public Angle getLati() { return lati; } public void setLati(Angle lati) { this.lati = lati; } public Angle getLongi() { return longi; } public void setLongi(Angle longi) { this.longi = longi; } }