public double getAzimuthTo(LatLonGeo to, Datum datum) { return datum.getAzimuth(this, to); }
public double getAzimuthFrom(LatLonGeo from, Datum datum) { return datum.getAzimuth(from, this); }
public DistanceAzimuth getDistanceAzimuthTo(LatLonGeo to, Datum datum) { return datum.getDistanceAzimuth(this, to); }
public double getDistanceTo(LatLonGeo to, Datum datum) { return datum.getDistance(this, to); }
/** * Returns a newly constructed <code>LatLonGeo</code> generated by displacing this <code>LatLonGeo * </code> a specified distance along a geodesic at the given azimuth. If the datum is a sphere * the geodesic is a great circle. * * <p>This method calls {@link Datum#displace(LatLonGeo, double, double)} on the supplied datum * using this <code>LatLonGeo</code> as the initial point. * * @param dist distance to displace the current <code>LatLonGeo</code> * @param azimuth initial azimuth of displacement direction * @param datum underlying datum to use for the displacement * @return a newly constructed <code>LatLonGeo</code> that has been displaced by the specified * distance */ public LatLonGeo displacedBy(double dist, double azimuth, Datum datum) { return datum.displace(this, dist, azimuth); }
/** * Returns a newly constructed <code>LatLonGeo</code> with a geocentric latitude based on * interpreting the latitude in this <code>LatLonGeo</code> as geodetic. Longitude and altitude * will remain the same. See {@link Datum#toGeocentricLatitude(LatLonGeo)}. * * @param d Datum defines the spheroid used for projecting the latitude * @return newly constructed <code>LatLonGeo</code> with a geocentric latitude */ public LatLonGeo withGeocentricLatitudeOn(Datum d) { return d.toGeocentricLatitude(this); }
/** * Creates an (east,north,up) representation of this point on the plane tangent to Earth at the * given reference point. See {@link Datum#toEnu(LatLonRect, LatLonGeo)}. */ public final Vector3d toEnu(LatLonGeo refPoint, Datum datum) { LatLonRect thisRect = toLatLonRect(datum); return datum.toEnu(thisRect, refPoint); }
/** * Treats this <code>LatLonGeo</code> as an ECEF-g coordinate in the given <code>Datum</code> for * the purpose of converting it to an ECEF-r coordinate in the form of a newly constructed <code> * LatLonRect</code>. The new <code>LatLonRect</code> is formed by calling {@link * Datum#toLatLonRect(LatLonGeo)} on this <code>LatLonGeo</code>. * * <p><b>NOTE:</b> The latitude and longitude may be treated as geocentric or geodetic depending * on the <code>Datum</code> used. * * @see Datum#toLatLonRect(LatLonGeo) * @param datum <code>Datum</code> used to construct the new <code>LatLonRect</code> */ public LatLonRect toLatLonRect(Datum datum) { return datum.toLatLonRect(this); }
/** * Constructs and initializes a <code>LatLonGeo</code> based on the given (east,north,up) * coordinates in a local tangent plane coordinate system that is tangent to Earth at the given * reference point. * * @param enuPoint (east,north,up) coordinates of point to be converted, in system units * @param refPoint local tangent plane point of tangency * @param datum underlying datum used for calculations */ public static final LatLonGeo fromEnu(Vector3d enuPoint, LatLonGeo refPoint, Datum datum) { LatLonRect llr = datum.fromEnu(enuPoint, refPoint); LatLonGeo llg = llr.toLatLonGeo(datum); return llg; }