001package sec.geo.shape;
002
003import org.gavaghan.geodesy.GlobalPosition;
004
005public class Point {
006
007    private final double longitudeDegrees;
008    private final double latitudeDegrees;
009    private final double altitudeMeters;
010
011    public Point(double longitudeDegrees, double latitudeDegrees) {
012        this(longitudeDegrees, latitudeDegrees, 0);
013    }
014
015    public Point(double longitudeDegrees, double latitudeDegrees, double altitudeMeters) {
016        this.longitudeDegrees = longitudeDegrees;
017        this.latitudeDegrees = latitudeDegrees;
018        this.altitudeMeters = altitudeMeters;
019    }
020
021    public double getLongitude() {
022        return longitudeDegrees;
023    }
024
025    public double getLatitude() {
026        return latitudeDegrees;
027    }
028
029    public double getAltitude() {
030        return altitudeMeters;
031    }
032
033    public GlobalPosition toGlobalPos() {
034        return new GlobalPosition(getLatitude(), getLongitude(), getAltitude());
035    }
036
037    @Override
038    public boolean equals(Object o) {
039        if (!(o instanceof Point)) {
040            return false;
041        }
042        Point other = (Point) o;
043        return (longitudeDegrees == other.longitudeDegrees) && (latitudeDegrees == other.latitudeDegrees)
044                && (altitudeMeters == other.altitudeMeters);
045    }
046
047    @Override
048    public String toString() {
049        return "[" + longitudeDegrees + "," + latitudeDegrees + "," + altitudeMeters + "]";
050    }
051}