Ellipsoid Class Function Manual |
Purpose
To report the current value of a, semi-major axis of the ellipsoid.
Class
Ellipsoid
Usage
{double} ret = object.A()
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") ->print my_elsoid.a() 6377276.34500 -> |
See also (class function)
b, f
Purpose
To report the current value of b, semi-minor axis of the ellipsoid.
Class
Ellipsoid
Usage
{double} ret = object.B()
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") ->print my_elsoid.a() 6356075.41314 -> |
See also (class function)
a, f
Purpose
To report the current value of Cx, shift of the ellipsoid center (of the current datum) in x axis from the center of the earth. In other words, it is the x coordinate of the ellipsoid center in WGS84 space rectangular coordinate system (WGS84 is considered a geocentric datum).
Please note that when an ellipsoid object is created, Cx is set to zero. However, this can be change if the object is set to a particular datum, using function "setdatum", or using L-function "Cx".
Thus
Cx = X(WGS84) - X(other)
Class
Ellipsoid
Usage
{double} ret = object.CX()
Example:
->my_elsoid = ellipsoid() ->my_elsoid.setdatum("indian75") ->print my_elsoid.cx() 210.000 -> |
See also (class function)
cy, cz
Purpose
To report the current value of Cy, shift of the ellipsoid center (of the current datum) in y axis from the center of the earth. In other words, it is the y coordinate of the ellipsoid center in WGS84 space rectangular coordinate system (WGS84 is considered a geocentric datum).
Please note that when an ellipsoid object is created, Cy is set to zero. However, this can be change if the object is set to a particular datum, using function "setdatum", or using L-function "Cy".
Thus
Cy = Y(WGS84) - Y(other)
Class
Ellipsoid
Usage
{double} ret = object.CY()
Example:
->my_elsoid = ellipsoid() ->my_elsoid.setdatum("indian75") ->print my_elsoid.cy() 814.000 -> |
See also (class function)
cx, cz
Purpose
To report the current value of Cz, shift of the ellipsoid center (of the current datum) in y axis from the center of the earth. In other words, it is the z coordinate of the ellipsoid center in WGS84 space rectangular coordinate system (WGS84 is considered a geocentric datum).
Please note that when an ellipsoid object is created, Cz is set to zero. However, this can be change if the object is set to a particular datum, using function "setdatum", or using L-function "Cz".
Thus
Cz = Z(WGS84) - Z(other)
Class
Ellipsoid
Usage
{double} ret = object.CZ()
Example:
->my_elsoid = ellipsoid() ->my_elsoid.setdatum("indian75") ->print my_elsoid.cz() 289.000 -> |
See also (class function)
cx, cy
Purpose
To report the current datum name of the ellipsoid object. It is just for an information, and does not play any role in computation.
Class
Ellipsoid
Usage
{String} ret = object.DATUM()
Example:
->my_elsoid = ellipsoid() ->print my_elsoid.datum() not_specified -> |
See also (class function)
cx, cy, cz
Purpose
To report the azimuth difference between two normal sections. It is due to that the normal section, between two point, say point 1 and point 2, when measured at point 1 will not be the same as that measured at point 2.
From Rapp R.H. (1991) Geometric Geodesy part I, Department of Geodetic Science and Surveying, the Ohio State University, page 59, EQ 4.33.
The function computes
the Azimuth separation of Reciprocal Normal Section. The output is in a
unit of ARC SECONDS.
this quantity is important as it is used to get the azimuth of the GEODESIC from
points 1 to 2, which is
azi (geodesic) = azi12 - 1/3(delta)
when delta is azimuth separation.
In general, for distances up to 20 - 25 km, it is not necessary to consider the azimuth separation of normal sections.
Class
Ellipsoid
Usage
{double} ret = object.DIFAZI_NORMSECT({double} argm1, {double} argm2, {double} argm3)
argm1 = latitude of point 1 (in degree)
argm2 = azimuth from point 1 to 2 (in degree)
argm3 = distance between the two points (in meter)
Example:
->my_elsoid = ellipsoid() ->print my_elsoid.difazi_normsect(33, 45, 50000) 0.01472 -> |
See also (class function)
dist2norm
Purpose
To solve the geodetic direct problem, given a latitude, longitude of point 1, distance and azimuth from point 1 to 2, want to calculate latitude, longitude of point 2 and azimuth from point 2 to 1.
Both direct and inverse
problem are from Rapp R.H. (1991) Geometric Geodesy part I, Department of
Geodetic Science and Surveying, the Ohio State University, page 114-115 (The
Bowring Formulas).
This is a non-iterative process, and can be used for a geodesic up to 150 km.
The return result is a
"Vector" of storing 3 values, namely latitude, longitude of point 2 and azimuth
from point 2 to 1.
Class
Ellipsoid
Usage
{Vector} ret = object.DIRECT({double} argm1, {double} argm2, {double} argm3, {double} argm4)
argm1 = latitude of point 1 (in degree)
argm2 = longitude of point 1 (in degree)
argm3 = distance between the two points (in meter)
argm4 = azimuth from point 1 to 2 (in degree)
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") ->print my_elsoid.direct(30,90,10000,45)
Vector size : 3 -> |
See also (class function)
inverse
Purpose
To compute the distance of a normal section between two point, say point 1 and 2, given straight-line distance between two points (s), mean latitude of two points (phe), azimuth from point 1 to point 2, ellipsoidal height at point 1 (h1), and ellipsoidal height at point 2 (h2).
The formulas are as follows.
up = s*s - (h2-h1)*(h2-h1)
down = (1.0 + h1/R) * (1.0 + h2/R)
s0 = sqrt(up/down)
S = 2.0 * R * asin(s0/(2.0*R))
R is the mean radius in
the given azimuth direction and S is the distance of a normal section between
the two points.
Class
Ellipsoid
Usage
{double} ret = object.DIFAZI_NORMSECT({double} argm1, {double} argm2, {double} argm3, {double} argm4, {double} argm5)
argm1 = distance between the two points (in meter)
argm2 = latitude of point 1 (in degree)
argm3 = azimuth from point 1 to 2 (in degree)
argm4 = elevation (height) at point 1 (in meter)
argm5 = elevation (height) at point 2 (in meter)
Example:
->my_elsoid = ellipsoid() ->print
my_elsoid .dist2norm(10000,33,45,100,200) -> |
See also (class function)
difazi_normsect
Purpose
To report the current value of e, the first eccentricity of the ellipsoid.
Class
Ellipsoid
Usage
{double} ret = object.E()
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") ->print my_elsoid.e() 0.0814729810 -> |
See also (class function)
a, f
Purpose
To convert from ENH topocentric coordinate to XYZ space rectangular coordinate. See more details in section Example (Geodesy and Surveying).
Class
Ellipsoid
Usage
{Pt3D} ret = object.ENH2XYZ({double} argm1, {double} argm2, {double} argm3, {double} argm4, {double} argm5, [{double} argm6])
argm1 = E coordinate
argm2 = N coordinate
argm3 = H coordinate
argm4 = latitude of the topocentric origin (in degree)
argm5 = longitude of the topocentric origin (in degree)
argm6 = height of the topocentric origin (in meter) (default = 0)
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") ->pt_xyz = my_elsoid.enh2xyz(200,300,10,30,90)
->print pt_xyz -> |
See also (class function)
xyz2enh
Purpose
To report the current value of f, the flattening of the ellipsoid.
Class
Ellipsoid
Usage
{double} ret = object.F({double} argm1)
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") ->print my_elsoid.f() 0.0033244493 -> |
See also (class function)
a, b, e
Purpose
To compute the geocentric latitude from a given geodetic latitude.
Class
Ellipsoid
Usage
{double} ret = object.GCLAT()
argm1 = geodetic latitude (in degree)
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") ->my_elsoid.gclat(45) ans = 44.8092071776 -> |
See also (class function)
rdlat
Purpose
To convert from geographic coordinate (latitude, longitude, height) to XYZ space rectangular coordinate. See more details in section Example (Geodesy and Surveying).
Class
Ellipsoid
Usage
{Pt3D} ret = object.GEO2XYZ({double} argm1, {double} argm2, {double} argm3)
argm1 = latitude (in degree)
argm2 = longitude (in degree)
argm3 = elevation (in meter)
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") ->pt_xyz = my_elsoid.geo2xyz(30,90,10)
->print pt_xyz -> |
See also (class function)
xyz2geo
Purpose
To initialize an ellipsoid object.
Class
Ellipsoid
Usage
{void} object.INIT({double} argm1, {double} argm2)
argm1 = semi-major axis (a)
argm2 = flattening (f)
Example:
->my_elsoid = ellipsoid() ->my_elsoid.init(6370000, 1/300) -> |
See also (class function)
Purpose
To solve the geodetic inverse problem, given a latitude, longitude of point 1 and point 2, want to calculate distance, azimuth from point 1 to 2 and azimuth from point 2 to 1.
Both direct and inverse
problem are from Rapp R.H. (1991) Geometric Geodesy part I, Department of
Geodetic Science and Surveying, the Ohio State University, page 114-115 (The
Bowring Formulas).
This is a non-iterative process, and can be used for a geodesic up to 150 km.
The return result is a
"Vector" of storing 3 values, namely distance, azimuth from point 1 to 2 and
azimuth from point 2 to 1.
Class
Ellipsoid
Usage
{Vector} ret = object.INVERSE({double} argm1, {double} argm2, {double} argm3, {double} argm4)
argm1 = latitude of point 1 (in degree)
argm2 = longitude of point 1 (in degree)
argm3 = latitude of point 2 (in degree)
argm4 = longitude of point 2 (in degree)
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") ->print my_elsoid.inverse(30,90,30.0637737074,90.0733430751)
Vector size : 3 -> |
See also (class function)
direct
Purpose
To check whether the two ellipsoids are the same (same values of a, f, Cx, Cy, and Cz).
Class
Ellipsoid
Usage
{bool} ret = object.IS_SAME({Ellipsoid} argm1)
argm1 = another ellipsoid
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") ->check1 = my_elsoid.is_same(his_elsoid) -> |
See also (class function)
Purpose
To list the names of all predefined ellipsoids. The results are stored in a vector of string, "VecStr" object.
Class
Ellipsoid
Usage
{VecStr} ret = object.LIST()
Example:
->my_elsoid = ellipsoid() ->el_list = my_elsoid.list() -> |
See also (class function)
listdatum
Purpose
To list the names of all predefined geodetic datum. The results are stored in a vector of string, "VecStr" object.
Class
Ellipsoid
Usage
{VecStr} ret = object.LISTDATUM()
Example:
->my_elsoid = ellipsoid() ->el_list = my_elsoid.listdatum() -> |
See also (class function)
list
Purpose
To compute the radius of curvature at a particular point on an ellipsoid along meridian.
Class
Ellipsoid
Usage
{double} ret = object.M({double} argm1)
argm1 = latitude at which the radius of curvature is computed (in degree)
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") ->rad1 = my_elsoid.M(45) -> |
See also (class function)
N
Purpose
To compute the length along meridian between two points.
Class
Ellipsoid
Usage
{double} ret = object.MER_ARCLEN({double} argm1, {double} argm2)
argm1 = difference in latitude between two points (in degree)
argm2 = mean latitude between two points (in degree)
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") ->dist1 = my_elsoid.mer_arclen(10,45) -> |
See also (class function)
Purpose
To compute the radius of curvature at a particular point on an ellipsoid, along the prime vertical, a normal section that is perpendicular to the meridian section.
Class
Ellipsoid
Usage
{double} ret = object.N({double} argm1)
argm1 = latitude at which the radius of curvature is computed (in degree)
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") ->rad1 = my_elsoid.N(45) -> |
See also (class function)
M
Purpose
To report the current ellipsoid name of the ellipsoid object. It is just for an information, and does not play any role in computation.
Class
Ellipsoid
Usage
{String} ret = object.NAME()
Example:
->my_elsoid = ellipsoid() ->print my_elsoid.name() not_specified -> |
See also (class function)
datum
Purpose
To compute normal gravity at a particular point on or above an ellipsoid. There are only three model available, namely "GRS67", "GRS80" and "WGS84". Thus the name of the ellipsoid object must be set, use function "set", PRIOR to call this function.
The result has a unit of m/s2.
Class
Ellipsoid
Usage
{double} ret = object.NORMGRAV({double} argm1, [{double} argm2])
argm1 = latitude of the point (in degree)
argm2 = height above ellipsoid (in meter) (default = 0)
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("GRS80") ->gamma = my_elsoid.normgrav(10,45) -> |
See also (class function)
Purpose
To compute radius of curvature at a particular point on an ellipsoid along a given direction, specified by an azimuth angle.
Class
Ellipsoid
Usage
{double} ret = object.RAZI({double} argm1, [{double} argm2])
argm1 = latitude of the point (in degree)
argm2 = azimuth (in degree)
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("GRS80") ->r = my_elsoid.razi(30, 45) -> |
See also (class function)
rgauss, M, N:
Purpose
To compute the reduced latitude from a given geodetic latitude.
Class
Ellipsoid
Usage
{double} ret = object.RDLAT()
argm1 = geodetic latitude (in degree)
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") ->lat = my_elsoid.rdlat(45) -> |
See also (class function)
gclat
Purpose
To compute the mean radius of curvature at a particular point on an ellipsoid using Gaussian formula, Rgauss = sqrt(MN).
Class
Ellipsoid
Usage
{double} ret = object.RGAUSS({double} argm1)
argm1 = latitude at which the radius of curvature is computed (in degree)
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") ->rad1 = my_elsoid.rgauss(45) -> |
See also (class function)
M, N, Rmean
Purpose
To compute the mean radius of curvature at a particular point on an ellipsoid using mean of curvatures, Rmean = 2MN/(M+N).
Class
Ellipsoid
Usage
{double} ret = object.RMEAN({double} argm1)
argm1 = latitude at which the radius of curvature is computed (in degree)
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") ->rad1 = my_elsoid.rmean(45) -> |
See also (class function)
M, N, Rgauss
Purpose
To set an ellipsoid object to a specific ellipsoid. The name of the ellipsoid being set must be one that in the list of predefined ellipsoids. To see all of them, use the class function "list", or use the command "list ellipsoid".
Class
Ellipsoid
Usage
{void} object.SET({String} argm1)
argm1 = ellipsoid name
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") -> |
See also (class function)
setdatum
Purpose
To set an ellipsoid object to a specific geodetic datum. The name of the datum being set must be one that in the list of predefined datums. To see all of them, use the class function "listdatum", or use the command "list datum".
Please note that the definition of geodetic datum includes parameters of ellipsoid as well as its location relative to the center of the earth. However the definition of ellipsoid does not include the location of the ellipsoid.
Class
Ellipsoid
Usage
{void} object.SETDATUM({String} argm1)
argm1 = geodetic datum name
Example:
->my_elsoid = ellipsoid() ->my_elsoid.setdatum("indian75") -> |
See also (class function)
set
Purpose
To convert from a vector of ENH topocentric coordinates to a vector of XYZ space rectangular coordinates. See more details in section Example (Geodesy and Surveying).
Class
Ellipsoid
Usage
{VecPt3D} ret = object.VECENH2XYZ({VecPt3D} argm1, {double} argm2, {double} argm3, [{double} argm4])
argm1 = vector of ENH coordinates
argm2 = latitude of the topocentric origin (in degree)
argm3 = longitude of the topocentric origin (in degree)
argm4 = height of the topocentric origin (in meter) (default = 0)
Example:
->my_elsoid = ellipsoid() ->v_xyz = my_elsoid.vecenh2xyz(v, 30,90,0) -> |
See also (class function)
enh2xyz
Purpose
To convert from a vector of geographic coordinates (latitude, longitude, height) to XYZ space rectangular coordinates. See more details in section Example (Geodesy and Surveying).
Class
Ellipsoid
Usage
{VecPt3D} ret = object.VECGEO2XYZ({VecPt3D} argm1)
argm1 = vector of geographic coordinates (lat, lon, height) (in degree/meter)
Example:
->my_elsoid = ellipsoid() ->v_xyz = my_elsoid.vecgeo2xyz(v) -> |
See also (class function)
geo2xyz
Purpose
To convert from a vector of XYZ space rectangular coordinates to a vector of ENH topocentric coordinates. See more details in section Example (Geodesy and Surveying).
Class
Ellipsoid
Usage
{VecPt3D} ret = object.VECXYZ2ENH({VecPt3D} argm1, {double} argm2, {double} argm3, [{double} argm4])
argm1 = vector of XYZ coordinates
argm2 = latitude of the topocentric origin (in degree)
argm3 = longitude of the topocentric origin (in degree)
argm4 = height of the topocentric origin (in meter) (default = 0)
Example:
->my_elsoid = ellipsoid() ->v_enh = my_elsoid.vecxyz2enh(v, 30,90,0) -> |
See also (class function)
xyz2enh
Purpose
To convert from a XYZ space rectangular coordinates to a vector of geographic coordinates (latitude, longitude, height). See more details in section Example (Geodesy and Surveying).
Class
Ellipsoid
Usage
{VecPt3D} ret = object.VECXYZ2GEO({VecPt3D} argm1)
argm1 = vector of XYZ coordinates
Example:
->my_elsoid = ellipsoid() ->v_geo = my_elsoid.vecxyz2geo(v) -> |
See also (class function)
xyz2geo
Purpose
To convert from a vector of ENH topocentric coordinates to a vector of XYZ space rectangular coordinates. See more details in section Example (Geodesy and Surveying).
Both input and output coordinates will have ID number.
Class
Ellipsoid
Usage
{VecIdPt3D} ret = object.VIDENH2XYZ({VecIdPt3D} argm1, {double} argm2, {double} argm3, [{double} argm4])
argm1 = vector of ENH coordinates with ID
argm2 = latitude of the topocentric origin (in degree)
argm3 = longitude of the topocentric origin (in degree)
argm4 = height of the topocentric origin (in meter) (default = 0)
Example:
->my_elsoid = ellipsoid() ->v_xyz = my_elsoid.videnh2xyz(v, 30,90,0) -> |
See also (class function)
enh2xyz
Purpose
To convert from a vector of geographic coordinates (latitude, longitude, height) to XYZ space rectangular coordinates. See more details in section Example (Geodesy and Surveying).
Both input and output coordinates will have ID number.
Class
Ellipsoid
Usage
{VecIdPt3D} ret = object.VIDGEO2XYZ({VecIdPt3D} argm1)
argm1 = vector of geographic coordinates (lat, lon, height) (in degree/meter)
Example:
->my_elsoid = ellipsoid() ->v_xyz = my_elsoid.vidgeo2xyz(v) -> |
See also (class function)
geo2xyz
Purpose
To convert from a vector of XYZ space rectangular coordinates to a vector of ENH topocentric coordinates. See more details in section Example (Geodesy and Surveying).
Both input and output coordinates will have ID number.
Class
Ellipsoid
Usage
{VecIdPt3D} ret = object.VIDXYZ2ENH({VecIdPt3D} argm1, {double} argm2, {double} argm3, [{double} argm4])
argm1 = vector of XYZ coordinates
argm2 = latitude of the topocentric origin (in degree)
argm3 = longitude of the topocentric origin (in degree)
argm4 = height of the topocentric origin (in meter) (default = 0)
Example:
->my_elsoid = ellipsoid() ->v_enh = my_elsoid.vidxyz2enh(v, 30,90,0) -> |
See also (class function)
xyz2enh
Purpose
To convert from a XYZ space rectangular coordinates to a vector of geographic coordinates (latitude, longitude, height). See more details in section Example (Geodesy and Surveying).
Both input and output coordinates will have ID number.
Class
Ellipsoid
Usage
{VecIdPt3D} ret = object.VIDXYZ2GEO({VecIdPt3D} argm1)
argm1 = vector of XYZ coordinates
Example:
->my_elsoid = ellipsoid() ->v_geo = my_elsoid.vidxyz2geo(v) -> |
See also (class function)
xyz2geo
Purpose
To convert from XYZ space rectangular coordinate to ENH topocentric coordinate. See more details in section Example (Geodesy and Surveying).
Class
Ellipsoid
Usage
{Pt3D} ret = object.XYZ2ENH({double} argm1, {double} argm2, {double} argm3, {double} argm4, {double} argm5, [{double} argm6])
argm1 = X coordinate
argm2 = Y coordinate
argm3 = Z coordinate
argm4 = latitude of the topocentric origin (in degree)
argm5 = longitude of the topocentric origin (in degree)
argm6 = height of the topocentric origin (in meter) (default = 0)
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") ->pt_enh = my_elsoid.enh2xyz(-200.000, 5527330.200, 3170368.714, 30, 90) -> |
See also (class function)
enh2xyz
Purpose
To convert from XYZ space rectangular coordinate to geographic coordinate (latitude, longitude, height). See more details in section Example (Geodesy and Surveying).
Class
Ellipsoid
Usage
{Pt3D} ret = object.XYZ2GEO({double} argm1, {double} argm2, {double} argm3)
argm1 = X coordinate
argm2 = Y coordinate
argm3 = Z coordinate
Example:
->my_elsoid = ellipsoid() ->my_elsoid.set("everest") ->pt1 = my_elsoid.geo2xyz(30,90,10)
->print pt1
|
See also (class function)
geo2xyz