Salut @kaktusatomik,
Je reviens pour mes histoires de longitude, latitude et formule de haversine en documentant un peu plus.
point A : pointe du RAZ : 48,039784 / -4,741226
point B Hyères : 42,998002 / 6,211262
pour moi au format lat / long
je met ces coordonnées dans des équipements gls en point fixe.
L’équipement global me donne la distance entre les deux : 1341.83 (km)
Google map me donne (mesure de la dist, approx) : 1016,12 (km)
Si j’applique la formule :
Phi = lat et Lambda = Longitude (et en corrigeant le rayon de la terre à 6378,137

j’arrive à une distance : 1020,64925 km
en inversant lat et long ds ce calcul j’arrive à 1341,826533 km
dans /plugins/gsl/core/class/gsl.class.php
, la fonction :
public static function distance($_a, $_b) {
$a = explode(',', $_a);
$b = explode(',', $_b);
$earth_radius = 6378.137;
$rlo1 = deg2rad($a[0]);
$rla1 = deg2rad($a[1]);
$rlo2 = deg2rad($b[0]);
$rla2 = deg2rad($b[1]);
$dlo = ($rlo2 - $rlo1) / 2;
$dla = ($rla2 - $rla1) / 2;
$a = (sin($dla) * sin($dla)) + cos($rla1) * cos($rla2) * (sin($dlo) * sin($dlo));
$d = 2 * atan2(sqrt($a), sqrt(1 - $a));
return round(($earth_radius * $d), 2);
}
qui à priori est bien la formule de haversine.
je ne sais pas comment elle est appelé, mais dans le plugin les coordonnées sont stockées par latitude, longitude
si je ne me trompe pas, l’inversion est dans :
$rlo1 = deg2rad($a[0]);
$rla1 = deg2rad($a[1]);
qui devrait être inversé selon mon interprétation, l’index ‹ 0 › de l’explode doit être la latitude si on injecte dans la fonction les coordonnées telles que données dans les commandes des équipements du plugin.
(question bête/naive de j’apprends tjrs , pkoi ne pas utiliser list($rla1, $rlo1) = explode(",", $_a);
y’a un défaut avec cette fonction ?)
A ta dispo si je ne suis pas super clair.