« Haversine (rtl) » : différence entre les versions
Aucun résumé des modifications |
m (Remplacement du texte — « category:Latest » par « Category:Version700 ») |
||
| (2 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
{{ | {{Version700}} | ||
<source lang='delphi'>Function haversine(lat1,long1,lat2,long2):double;</source> | <source lang='delphi'>Function haversine(lat1,long1,lat2,long2):double;</source> | ||
| Ligne 44 : | Ligne 44 : | ||
[[category:RTL Conversion]] | [[category:RTL Conversion]] | ||
[[Category:TGeolocation]] | [[Category:TGeolocation]] | ||
[[ | [[Category:Version700]] | ||
Dernière version du 13 janvier 2015 à 10:15
Function haversine(lat1,long1,lat2,long2):double;
Cette fonction calcule la distance en kilomètre entre deux coordonnées de lieu exprimés en degré.
| Result | La distance en KM entre les deux coordonnées. |
| lat1,long1 | Le premier jeu de coordonné. |
| lat2,long2 | Le second jeu de coordonné. |
Pseudo code :
const cEarthRadiusKM = 6371.0009;
function haversine(lat1,long1,lat2,long2:Double; E:double=cEarthRadiusKM):double;
var slon,slat,a,c:Double;
begin
lat1 := degToRad(lat1);
long1 := degToRad(long1);
lat2 := degToRad(lat2);
long2 := degToRad(long2);
//
slon := sin((long2 - long1)/2);
slat := sin((lat2 - lat1)/2);
a := slat*slat + cos(lat1)*cos(lat2) * slon*slon;
c := 2 * arctan2( sqrt(a), sqrt(1-a) );
Result := E * c;
end;
Voir aussi: