Prototype and description of the function vincentydirect() (Function of the unlock requiring group "Distance calculations") |
vincentydirect() Destination point and bearing on the earth ellipsoid by given start point, bearing and distance (Vincenty direct formula). Prototype of the DLL function in C++ syntax (attend lower case!): extern "C" __declspec(dllimport) unsigned long __stdcall vincentydirect( double nGeoLon1, double nGeoLat1, double nDistance, double nAzimut1, double *nGeoLon2, double *nGeoLat2, double *nAzimut2, unsigned short nEllipsoid); Prototype of the DLL function in Visual Objects syntax: _DLL function vincentydirect(; nGeoLon1 as real8,; // 8 Byte nGeoLat1 as real8,; // 8 Byte nDistance as real8,; // 8 Byte nAzimut1 as real8,; // 8 Byte nGeoLon2 ref real8,; // 4 Byte nGeoLat2 ref real8,; // 4 Byte nAzimut2 ref real8,; // 4 Byte nEllipsoid as word); // 2 Byte as logic pascal:geodll32.vincentydirect // 4 Byte The function calculates the geographic coordinates of a destination point and its backward bearing (azimuth) on the earth ellipsoid. The calculation uses the geographical coordinates of a starting point, its forward bearing (azimuth) and the distance in meters between the points. This calculation in the geodesy is also referred to as "Direct Position Computation". The "Vincenty Direct Formula" is used for the calculation on the earth ellipsoid, which returns the result with high accuracy. Vincentys formulas are working with an accuracy of 0.000015 seconds. Source: Vincenty direct formula - Thaddeus Vincenty, "Direct and Inverse Solutions of Geodesics on the Ellipsoid with application of nested equations", Survey Review, Vol XXII no 176, 1975. The geographic coordinates nGeoLon1 (longitude of the first point) and nGeoLat1 (latitude of the first point) as well as the forward bearing nAzimut1 from point 1 to point 2 must be passed in [degrees]-notation [vggg.ggg] to the function. The distance between the points will be passed in meter with the parameter nDistance. In nEllipsoid the necessary ellipsoid is passed. If in nEllipsoid the value 0 is passed, then the geodetic ellipsoid WGS84 is used. If in nEllipsoid the value 1000 is passed, the function uses the semi axes of the user- defined earth ellipsoid passed before by the function setuserellsource(). The function returns as results the geographic coordinates nGeoLon2 (longitude of the second point) and nGeoLat2 (latitude of the second point) and the backward bearing nAzimut2 from point 2 to point 1 in [degrees]- notation [vggg.ggg]. The bearing will be calculated in the range of 0 up to 360 degrees, where 0 degrees points north and 90 degrees points east. The parameters are passed and/or returned as follows: nGeoLon1 Geographic longitude of the first point in [degrees] notation vggg.ggg nGeoLat1 Geographic latitude of the first point in [degrees] notation vgg.ggg nDistance Distance between the points in meters on the earth ellipsoid nAzimut1 Forward bearing from point 1 in direction to point 2 in [degrees] notation ggg.ggg nGeoLon2 Geographic longitude of the second point in [degrees] notation (ref) vggg.ggg as result nGeoLat2 Geographic latitude of the second point in [degrees] notation (ref) vggg.ggg as result nAzimut2 Backward bearing from point 2 in direction to point 1 in (ref) [degrees] notation ggg.ggg as result nEllipsoid Geodetic ellipsoid. The ellipsoid numbers are specified at the bottom part of the list "Systems sorted alphabetical". The numbers of the Reference Systems specified in the list "Systems sorted by countries" can be used also. returnVal In case of an error the function returns FALSE, otherwise TRUE. For geographic coordinates in [degrees] notation applies: v Optional sign for longitudes west of Greenwich and latitudes south of the equator. g degrees and decimal fraction of a degree. Unlocking: This function is a component of the unlock requiring function group "distance calculations". It is unlocked for unrestricted use together with the other functions of the group by passing the unlock parameters, acquired from the software distribution company, trough the function setunlockcode(). Without unlocking only a few function calls for test purposes (shareware principle) are possible. |