Salut
Une proposition voisine :
Avion := A = (latA, lonA)
Balise := B = (latB, lonB)
Route souhaitée vers balise := Rs
[Toutes les fonctions trigo ci-dessous s'entendent en radians, mais latitudes, longitudes et courses sont exprimées en degrés]
1) Route vraie entre A et B :
------------------------------------
Rv = atan2((lonB - lonA) * pi / 180, log(tan(pi / 4 + latB * pi / 360) / tan(pi / 4 + latA * pi / 360))) * 180.
Si Rv négatif, ajouter 360 à Rv (uniquement pour satisfaire la convention qu'une route s'exprime entre 0 et 360)
[on aperçoit cette formule dans le deuxième lien donné par secmast, dans la rubrique Rhumb lines/ Bearing]
2) Avion à gauche ou à droite de la route souhaitée ? :
--------------------------------------------------------------------
Si Rv < Rs : trop à droite ; si Rv > Rs : trop à gauche (mnémo : d "plus petit" que g dans alphabet, donc si route calculée plus petite que souhaitée -> d, sinon g)
3) Distance le long de route vraie entre A et B :
------------------------------------------------------------
d = |latD - latA| * 60Mn / |cos( Rv * pi / 180)| [formule numériquement instable si Rv très proche de 90 ou de 270, dans ce cas la remplacer par 60Mn * |lonA - lonB| * cos(latA * pi / 180)]
C'est d'ailleurs une des définitions équivalentes d'une ligne de rumb : le gain en latitude y est proportionnel à la distance parcourue.
4) Ecart à la route souhaitée :
--------------------------------------
Pour des tronçons de quelques centaines de Nm au plus et des écarts de routes raisonnables une bonne approximation de l'écart (et qui peut se faire de tête) est donnée par :
erreur de route * distance / 60, soit |Rv - Rs| * d / 60.
----
Dans ta calculette en ligne tu évalues la distance A à B comme une distance le long d'un grand cercle, hors à course constante les trajectoires ne sont pas des grands cercles mais des lignes de rumb (de fait aucune des formules ci-dessus n'est de la trigonométrie sphérique, elles sont liées à la projection de Mercator). Pour de faibles distances les deux seront proches à quelques Nm près, donc si tu veux garder cette formule (idem pour le calcul de la route vraie) plutôt que celles en 1) + 3) ci-dessus tu peux sans trop de risque. Par contre pour l'écart et le côté gauche/droite je ne sais pas quel calcul tu as fait exactement mais j'ai l'impression qu'il doit y avoir plus qu'une erreur d'approximation (pour un avion à Grenoble voulant se rendre à Paris par une route au 360 elle indique qu'on serait trop à gauche).
Avec 2) - 4) tu peux le faire de tête (d'ailleurs le navigateur du Tupolev ne devait pas avoir droit à PhP ).
Une proposition voisine :
Avion := A = (latA, lonA)
Balise := B = (latB, lonB)
Route souhaitée vers balise := Rs
[Toutes les fonctions trigo ci-dessous s'entendent en radians, mais latitudes, longitudes et courses sont exprimées en degrés]
1) Route vraie entre A et B :
------------------------------------
Rv = atan2((lonB - lonA) * pi / 180, log(tan(pi / 4 + latB * pi / 360) / tan(pi / 4 + latA * pi / 360))) * 180.
Si Rv négatif, ajouter 360 à Rv (uniquement pour satisfaire la convention qu'une route s'exprime entre 0 et 360)
[on aperçoit cette formule dans le deuxième lien donné par secmast, dans la rubrique Rhumb lines/ Bearing]
2) Avion à gauche ou à droite de la route souhaitée ? :
--------------------------------------------------------------------
Si Rv < Rs : trop à droite ; si Rv > Rs : trop à gauche (mnémo : d "plus petit" que g dans alphabet, donc si route calculée plus petite que souhaitée -> d, sinon g)
3) Distance le long de route vraie entre A et B :
------------------------------------------------------------
d = |latD - latA| * 60Mn / |cos( Rv * pi / 180)| [formule numériquement instable si Rv très proche de 90 ou de 270, dans ce cas la remplacer par 60Mn * |lonA - lonB| * cos(latA * pi / 180)]
C'est d'ailleurs une des définitions équivalentes d'une ligne de rumb : le gain en latitude y est proportionnel à la distance parcourue.
4) Ecart à la route souhaitée :
--------------------------------------
Pour des tronçons de quelques centaines de Nm au plus et des écarts de routes raisonnables une bonne approximation de l'écart (et qui peut se faire de tête) est donnée par :
erreur de route * distance / 60, soit |Rv - Rs| * d / 60.
----
Dans ta calculette en ligne tu évalues la distance A à B comme une distance le long d'un grand cercle, hors à course constante les trajectoires ne sont pas des grands cercles mais des lignes de rumb (de fait aucune des formules ci-dessus n'est de la trigonométrie sphérique, elles sont liées à la projection de Mercator). Pour de faibles distances les deux seront proches à quelques Nm près, donc si tu veux garder cette formule (idem pour le calcul de la route vraie) plutôt que celles en 1) + 3) ci-dessus tu peux sans trop de risque. Par contre pour l'écart et le côté gauche/droite je ne sais pas quel calcul tu as fait exactement mais j'ai l'impression qu'il doit y avoir plus qu'une erreur d'approximation (pour un avion à Grenoble voulant se rendre à Paris par une route au 360 elle indique qu'on serait trop à gauche).
Avec 2) - 4) tu peux le faire de tête (d'ailleurs le navigateur du Tupolev ne devait pas avoir droit à PhP ).
Commentaire