/** * Computes the absolute distance to the other coordinate's longitude * * @methodtype get * @methodproperty regular */ public double getLongitudinalDistance(SphericCoordinate other) { if (other == null) { throw new IllegalArgumentException("Other coordinate must not be null"); } double result; if (Math.signum(this.getLongitude()) != Math.signum(other.getLatitude())) { result = Math.abs(this.getLongitude()) + Math.abs(other.getLongitude()); if (result > 180.) { result = 360. - result; } } else { result = Math.abs(Math.abs(this.getLongitude()) - Math.abs(other.getLongitude())); } return result; }
@Override public boolean equals(Object obj) { if (obj == null) return false; if (!(obj instanceof SphericCoordinate)) return false; SphericCoordinate otherCoordinate = (SphericCoordinate) obj; if (latitude == otherCoordinate.getLatitude() && longitude == otherCoordinate.getLongitude() && radius == otherCoordinate.getRadius()) return true; else return false; }
/** * @param other the other Coordinate-Object * @return distance between the longitude-values of both coordinates as double-value * @methodtype query */ public double getLongitudinalDistance(SphericCoordinate secondCoordinate) { // preconditions assertNotNull(secondCoordinate); double longitudinalDistance = this.longitude - secondCoordinate.getLongitude(); longitudinalDistance = Math.abs(longitudinalDistance); // check for shortest way if (longitudinalDistance > 180) { longitudinalDistance = 360 - longitudinalDistance; } // postconditions assertIsValidDistance(longitudinalDistance); return longitudinalDistance; }