Maison > Problème commun > [Formules mathématiques et dérivation] Calculez la distance entre deux points au sol en fonction de la longitude et de la latitude

[Formules mathématiques et dérivation] Calculez la distance entre deux points au sol en fonction de la longitude et de la latitude

藏色散人
Libérer: 2020-10-22 11:39:09
avant
3611 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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]
Copier après la connexion

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]
Copier après la connexion

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!

Étiquettes associées:
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal