digiKam
|
Public Member Functions | |
double | eccentricity () const |
double | inverseFlattening () const |
bool | isIvfDefinitive () const |
bool | isSphere () const |
double | orthodromicDistance (double x1, double y1, double x2, double y2) |
double | radiusOfCurvature (double latitude) |
double | semiMajorAxis () const |
double | semiMinorAxis () const |
Static Public Member Functions | |
static Ellipsoid | CLARKE_1866 () |
static Ellipsoid | createEllipsoid (const QString &name, double semiMajorAxis, double semiMinorAxis) |
static Ellipsoid | createFlattenedSphere (const QString &name, double semiMajorAxis, double inverseFlattening) |
static Ellipsoid | GRS80 () |
static Ellipsoid | INTERNATIONAL_1924 () |
static Ellipsoid | SPHERE () |
static Ellipsoid | WGS84 () |
Protected Member Functions | |
Ellipsoid (const QString &name, double radius, bool ivfDefinitive) | |
Ellipsoid (const QString &name, double semiMajorAxis, double semiMinorAxis, double inverseFlattening, bool ivfDefinitive) | |
Protected Attributes | |
double | m_inverseFlattening |
bool | m_isSphere |
bool | m_ivfDefinitive |
double | m_semiMajorAxis |
double | m_semiMinorAxis |
QString | name |
Geometric figure that can be used to describe the approximate shape of the earth. In mathematical terms, it is a surface formed by the rotation of an ellipse about its minor axis. An ellipsoid requires two defining parameters:
|
protected |
Constructs a new ellipsoid using the specified axis length. The properties map is given unchanged to the AbstractIdentifiedObjectAbstractIdentifiedObject(Map) super-class constructor.
semiMajorAxis | The equatorial radius. |
semiMinorAxis | The polar radius. |
inverseFlattening | The inverse of the flattening value. |
ivfDefinitive | true if the inverse flattening is definitive. |
Referenced by createEllipsoid(), and createFlattenedSphere().
|
protected |
|
static |
Clarke 1866 ellipsoid with axis in metres.
References createFlattenedSphere().
|
static |
Constructs a new ellipsoid using the specified axis length.
name | The ellipsoid name. |
semiMajorAxis | The equatorial radius. |
semiMinorAxis | The polar radius. |
References Ellipsoid(), m_semiMajorAxis, m_semiMinorAxis, and name.
Referenced by SPHERE().
|
static |
Constructs a new ellipsoid using the specified axis length and inverse flattening value.
name | The ellipsoid name. |
semiMajorAxis | The equatorial radius. |
inverseFlattening | The inverse flattening value. values. |
References DBL_MAX, Ellipsoid(), m_inverseFlattening, m_semiMajorAxis, and name.
Referenced by CLARKE_1866(), GRS80(), INTERNATIONAL_1924(), and WGS84().
double Digikam::Ellipsoid::eccentricity | ( | ) | const |
The ratio of the distance between the center and a focus of the ellipse to the length of its semimajor axis. The eccentricity can alternately be computed from the equation: e=sqrt(2f-f^2).
References m_isSphere, m_semiMajorAxis, and m_semiMinorAxis.
Referenced by radiusOfCurvature().
|
static |
GRS 80 ellipsoid with axis in metres.
References createFlattenedSphere().
|
static |
International 1924 ellipsoid with axis in metres.
References createFlattenedSphere().
double Digikam::Ellipsoid::inverseFlattening | ( | ) | const |
Returns the value of the inverse of the flattening constant. Flattening is a value used to indicate how closely an ellipsoid approaches a spherical shape. The inverse flattening is related to the equatorial/polar radius by the formula
ivf=r_e/(r_e-r_p).
For perfect spheres (i.e. if isSphere returns true
), the DoublePOSITIVE_INFINITY value is used.
References m_inverseFlattening.
bool Digikam::Ellipsoid::isIvfDefinitive | ( | ) | const |
Indicates if the inverse flattening is definitive for this ellipsoid. Some ellipsoids use the IVF as the defining value, and calculate the polar radius whenever asked. Other ellipsoids use the polar radius to calculate the IVF whenever asked. This distinction can be important to avoid floating-point rounding errors.
true
if the inverse flattening is definitive, or false
if the polar radius is definitive. References m_ivfDefinitive.
bool Digikam::Ellipsoid::isSphere | ( | ) | const |
true
if the ellipsoid is degenerate and is actually a sphere. The sphere is completely defined by the semi-major axis, which is the radius of the sphere.
true
if the ellipsoid is degenerate and is actually a sphere. References m_semiMajorAxis, and m_semiMinorAxis.
double Digikam::Ellipsoid::orthodromicDistance | ( | double | x1, |
double | y1, | ||
double | x2, | ||
double | y2 | ||
) |
Returns the orthodromic distance between two geographic coordinates. The orthodromic distance is the shortest distance between two points on a sphere's surface. The orthodromic path is always on a great circle. This is different from the loxodromic distance, which is a longer distance on a path with a constant direction on the compass.
x1 | Longitude of first point (in decimal degrees). |
y1 | Latitude of first point (in decimal degrees). |
x2 | Longitude of second point (in decimal degrees). |
y2 | Latitude of second point (in decimal degrees). |
References F, m_inverseFlattening, m_semiMajorAxis, and Digikam::Coordinates::toRadians().
Referenced by Digikam::GeodeticCalculator::checkOrthodromicDistance().
double Digikam::Ellipsoid::radiusOfCurvature | ( | double | latitude | ) |
Returns the Radius Of Curvature for the given latitude, using the geometric mean of two radii of curvature for all azimuths.
latitude | in degrees |
References eccentricity(), m_semiMajorAxis, and Digikam::Coordinates::toRadians().
Referenced by Digikam::FieldQueryBuilder::addPosition().
double Digikam::Ellipsoid::semiMajorAxis | ( | ) | const |
Length of the semi-major axis of the ellipsoid. This is the equatorial radius in axis linear unit.
References m_semiMajorAxis.
Referenced by Digikam::GeodeticCalculator::GeodeticCalculator().
double Digikam::Ellipsoid::semiMinorAxis | ( | ) | const |
Length of the semi-minor axis of the ellipsoid. This is the polar radius in axis linear unit.
References m_semiMinorAxis.
Referenced by Digikam::GeodeticCalculator::GeodeticCalculator().
|
static |
A sphere with a radius of 6371000 metres. Spheres use a simpler algorithm for orthodromic distance computation, which may be faster and more robust.
References createEllipsoid().
|
static |
WGS 1984 ellipsoid with axis in metres. This ellipsoid is used in GPS systems and is the default for most org.geotools
packages.
References createFlattenedSphere().
|
protected |
The inverse of the flattening value, or DBL_MAX if the ellipsoid is a sphere.
Referenced by createFlattenedSphere(), inverseFlattening(), and orthodromicDistance().
|
protected |
Referenced by eccentricity().
|
protected |
Tells if the Inverse Flattening definitive for this ellipsoid.
Referenced by isIvfDefinitive().
|
protected |
The equatorial radius.
Referenced by createEllipsoid(), createFlattenedSphere(), eccentricity(), isSphere(), orthodromicDistance(), radiusOfCurvature(), and semiMajorAxis().
|
protected |
The polar radius.
Referenced by createEllipsoid(), eccentricity(), isSphere(), and semiMinorAxis().
|
protected |
Referenced by createEllipsoid(), and createFlattenedSphere().