Public Member Functions | |
| GeodeticCalculator (const Ellipsoid &e=Ellipsoid::WGS84()) | |
| Performs geodetic calculations on an ellipsoid. | |
| double | azimuth () |
| bool | checkOrthodromicDistance () |
| Computes the orthodromic distance using the algorithm implemented in the Geotools's ellipsoid class (if available), and check if the error is smaller than some tolerance error. | |
| bool | computeDestinationPoint () |
| Computes the destination point from the starting point, the azimuth and the orthodromic distance. | |
| bool | computeDirection () |
| Computes the azimuth and orthodromic distance from the startingGeographicPoint starting point and the destinationGeographicPoint destination point. | |
| QPointF | destinationGeographicPoint () |
| bool | destinationGeographicPoint (double *longitude, double *latitude) |
| Ellipsoid | ellipsoid () const |
| double | meridianArcLength (double latitude1, double latitude2) |
| Calculates the meridian arc length between two points in the same meridian in the referenced ellipsoid. | |
| double | meridianArcLengthRadians (double P1, double P2) |
| Calculates the meridian arc length between two points in the same meridian in the referenced ellipsoid. | |
| double | orthodromicDistance () |
| void | setDestinationGeographicPoint (double longitude, double latitude) |
| Set the destination point in geographic coordinates. | |
| void | setDirection (double azimuth, double distance) |
| Set the azimuth and the distance from the startingGeographicPoint starting point. | |
| void | setStartingGeographicPoint (double longitude, double latitude) |
| Set the starting point in geographic coordinates. | |
Protected Member Functions | |
| double | castToAngleRange (const double alpha) |
| bool | checkAzimuth (double *azimuth) |
| Checks the azimuth validity. | |
| bool | checkLatitude (double *latitude) |
| Checks the latitude validity. | |
| bool | checkLongitude (double *longitude) |
| Checks the longitude validity. | |
| bool | checkOrthodromicDistance (const double distance) |
| Checks the orthodromic distance validity. | |
Protected Attributes | |
| double | a01 = 0.0 |
| Parameters computed from the ellipsoid. | |
| double | a02 = 0.0 |
| double | a03 = 0.0 |
| double | a21 = 0.0 |
| double | a22 = 0.0 |
| double | a23 = 0.0 |
| double | a42 = 0.0 |
| double | a43 = 0.0 |
| double | a63 = 0.0 |
| double | f = 0.0 |
| double | f2 = 0.0 |
| double | f3 = 0.0 |
| double | f4 = 0.0 |
| double | fo = 0.0 |
| GPNHRI parameters computed from the ellipsoid. | |
| double | m_A = 0.0 |
| GPNARC parameters computed from the ellipsoid. | |
| double | m_azimuth = 0.0 |
| double | m_B = 0.0 |
| double | m_C = 0.0 |
| double | m_D = 0.0 |
| bool | m_destinationValid = false |
| Tell if the destination point is valid. | |
| bool | m_directionValid = false |
| Tell if the azimuth and the distance are valids. | |
| double | m_distance = 0.0 |
| The distance and azimuth (in radians) from the starting point (long1, lat1) to the destination point (long2, lat2). | |
| double | m_E = 0.0 |
| double | m_eccentricitySquared = 0.0 |
| The eccentricity squared of the referenced ellipsoid. | |
| Ellipsoid | m_ellipsoid |
| The encapsulated ellipsoid. | |
| double | m_F = 0.0 |
| double | m_lat1 = 0.0 |
| The (latitude, longitude) coordinate of the first point in radians. | |
| double | m_lat2 = 0.0 |
| The (latitude, longitude) coordinate of the destination point in radians. | |
| double | m_long1 = 0.0 |
| double | m_long2 = 0.0 |
| double | m_maxOrthodromicDistance = 0.0 |
| The maximum orthodromic distance that could be calculated onto the referenced ellipsoid. | |
| double | m_semiMajorAxis = 0.0 |
| The semi major axis of the referenced ellipsoid. | |
| double | m_semiMinorAxis = 0.0 |
| The semi minor axis of the referenced ellipsoid. | |
| double | m_TOLERANCE_0 = 5.0e-15 |
Tolerance factors from the strictest (TOLERANCE_0) to the most relax one (TOLERANCE_3). | |
| double | m_TOLERANCE_1 = 5.0e-14 |
| double | m_TOLERANCE_2 = 5.0e-13 |
| double | m_TOLERANCE_3 = 7.0e-3 |
| double | m_TOLERANCE_CHECK = 1E-8 |
| Tolerance factor for assertions. | |
| double | T1 = 1.0 |
| Parameters computed from the ellipsoid. | |
| double | T2 = 0.0 |
| double | T4 = 0.0 |
| double | T6 = 0.0 |
|
explicit |
This class encapsulates a generic ellipsoid and calculates the following properties:
Distance and azimuth between two points. Point located at a given distance and azimuth from an other point.
The calculation use the following information:
The starting position (setStartingPosition), which is always considered valid. It is initially set at (0,0) and can only be changed to another legitimate value. Only one of the following:
The destination position (setDestinationPosition), or An azimuth and distance (setDirection). The latest one set overrides the other and determines what will be calculated.
| double Digikam::GeodeticCalculator::azimuth | ( | ) |
setDirection(double,double) setDirection(azimuth,distance), except if setDestinationGeographicPoint(double,double)
setDestinationGeographicPoint(...) has been invoked after. In this later case, the azimuth will be computed from the startingGeographicPoint starting point to the destination point.
|
protected |
The argument azimuth should be greater or equal than -180 degrees and lower or equals than +180 degrees. As a convenience, this method converts the azimuth to radians.
| azimuth | The azimuth value in decimal degrees. |
|
protected |
The argument latitude should be greater or equal than -90 degrees and lower or equals than +90 degrees. As a convenience, this method converts the latitude to radians.
| latitude | The latitude value in decimal degrees. |
|
protected |
The argument longitude should be greater or equal than -180 degrees and lower or equals than +180 degrees. As a convenience, this method converts the longitude to radians.
| longitude | The longitude value in decimal degrees. |
|
protected |
Arguments orthodromicDistance should be greater or equal than 0 and lower or equals than the maximum orthodromic distance.
| distance | The orthodromic distance value. |
| bool Digikam::GeodeticCalculator::computeDirection | ( | ) |
Computes the azimuth and orthodromic distance from the startingGeographicPoint() and the destinationGeographicPoint().
| bool Digikam::GeodeticCalculator::destinationGeographicPoint | ( | double * | longitude, |
| double * | latitude ) |
| Ellipsoid Digikam::GeodeticCalculator::ellipsoid | ( | ) | const |
| double Digikam::GeodeticCalculator::meridianArcLength | ( | double | latitude1, |
| double | latitude2 ) |
| latitude1 | The latitude of the first point (in decimal degrees). |
| latitude2 | The latitude of the second point (in decimal degrees). |
| double Digikam::GeodeticCalculator::meridianArcLengthRadians | ( | double | P1, |
| double | P2 ) |
| P1 | The latitude of the first point (in radians). |
| P2 | The latitude of the second point (in radians). |
| double Digikam::GeodeticCalculator::orthodromicDistance | ( | ) |
setDirection(double,double) setDirection(azimuth,distance), except if setDestinationGeographicPoint(double,double)
setDestinationGeographicPoint(...) has been invoked after. In this later case, the distance will be computed from the startingGeographicPoint starting point to the destination point.| void Digikam::GeodeticCalculator::setDestinationGeographicPoint | ( | double | longitude, |
| double | latitude ) |
The azimuth and distance values will be updated as a side effect of this call. They will be recomputed the next time getAzimuth() or getOrthodromicDistance() are invoked. Coordinates positive North and East.
| longitude | The longitude in decimal degrees between -180 and +180° |
| latitude | The latitude in decimal degrees between -90 and +90° |
| void Digikam::GeodeticCalculator::setDirection | ( | double | azimuth, |
| double | distance ) |
The destination point will be updated as a side effect of this call. It will be recomputed the next time destinationGeographicPoint() is invoked. Azimuth 0° North.
| azimuth | The azimuth in decimal degrees from -180° to 180°. |
| distance | The orthodromic distance in the same units as the ellipsoid axis. |
| void Digikam::GeodeticCalculator::setStartingGeographicPoint | ( | double | longitude, |
| double | latitude ) |
The azimuth, the orthodromic distance and the destination point are discarded. They will need to be specified again. Coordinates positive North and East.
| longitude | The longitude in decimal degrees between -180 and +180° |
| latitude | The latitude in decimal degrees between -90 and +90° |
|
protected |
f if the flattening of the referenced ellipsoid. f2, f3 and f4 are f2, f3 and f4 respectively.
|
protected |
false if long2 and lat2 need to be computed.
|
protected |
false if distance and azimuth need to be computed.
|
protected |
This point is set by setStartingGeographicPoint.
|
protected |
This point is set by setDestinationGeographicPoint.
|
protected |
It has no impact on computed values.