1. Hypothèse : La terre est une sphère parfaite. Les coordonnées de longitude et de latitude de deux points A et B au sol sont respectivement (Aj, Aw) et (Bj, Bw). Le rayon moyen de la terre R est de 6371 km.
2. Établir un système de coordonnées rectangulaires tridimensionnel :
Le centre de la terre est l'origine O, l'axe de la terre est l'axe Z, le pôle nord la direction est la direction positive de l'axe Z, et le plan équatorial est X Le plan où se trouvent l'axe et l'axe Y, sur ce plan, la direction du centre de la terre à la longitude zéro degré est la direction positive direction de l'axe X, et la direction positive de l'axe Y est déterminée selon la règle de droite.
Supposons que les coordonnées tridimensionnelles du point A soient (Ax, Ay, Az) et que les coordonnées tridimensionnelles du point B soient (Bx, By, Bz)
3. Idée :
Le plan où les trois points A, B et O coupent la terre forme un cercle de rayon R. Trouver la distance au sol entre AB, c'est trouver la longueur du arc AB sur le cercle. On peut trouver par la formule que la longueur de l'arc est égale au rayon multiplié par l'angle au centre.
Puisque R est déterminé, la longueur de l'arc AB peut être obtenue tant que l'angle θ entre OA et OB est obtenu. Arc AB=R*θ.
L'angle θ peut être obtenu par la formule vectorielle :
Vecteur OA*vecteur OB=|OA||OB|cosθ.
puis
cosθ=向量OA*向量OB/|OA||OB| =(Ax*Bx+Ay*By+Az*Bz)/R*R
4. Utilisez les coordonnées de latitude et de longitude pour exprimer les coordonnées rectangulaires tridimensionnelles :
Ax=R*cosAw*cosAj Ay=R*cosAw*sinAj Az=R*sinAw Bx=R*cosBw*cosBj By=R*cosBw*sinBj Bz=R*sinBw
peut être remplacé par
cosθ=cosAw*cosAj*cosBw*cosBj+cosAw*sinAj*cosBw*sinBj+sinAw*sinBw =cosAw*cosBw(cosAj*cosBj+sinAj*sinBj)+sinAw*sinBw =cosAw*cosBw*cos(Aj-Bj)+sinAw*sinBw θ=arccos[cosAw*cosBw*cos(Aj-Bj)+sinAw*sinBw]
5. En résumé, elle peut être calculée en fonction de la longitude et de la latitude. La formule de la distance entre deux points au sol :
弧AB=R*arccos[cosAw*cosBw*cos(Aj-Bj)+sinAw*sinBw]
Explication :
Tout le monde a fait la dérivation de formules similaires avant. Vous pouvez oublier certaines choses après un long moment, alors je l'ai mémorisé. Enregistré pour référence.
En raison des transformations multiterminales des fonctions trigonométriques, cette formule peut être exprimée sous plus d'une forme. Tant que les hypothèses de base sont les mêmes, elles doivent être mathématiquement équivalentes et peuvent être déduites les unes des autres. .
Lorsque vous l'utilisez dans le code du programme réel, vous devez faire attention au problème de l'unité. Par exemple, l'unité de longitude et de latitude obtenue à partir du localisateur est le degré, et la méthode de calcul trigonométrique est susceptible d'utiliser le radian. L'exemple est de savoir si l'unité de longueur est km ou m.
Recommandé : "Vidéo de programmation"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!