Les calculs et mises à jour dans VLM

De VlmWiki

Remarques : Il est question ici de moteur. Il ne s'agit pas du moteur du bateau mais du programme ;-) Le terme de vacation signifie calcul.

Déroulement du calcul

VLM calcule un ensemble de paramètres selon un ordre établi. L'ordre des opérations est le suivant :

Evaluation du nouveau cap si nécessaire (pilote orthodromique ou régulateur d'allure)

obtention d'un TWA (True Wind Angle)

Evaluation de la vitesse du bateau en fonction de son TWA

Le vent pris en considération n'est pas celui qui était calculé (interpolation) au début de l'exécution du moteur, mais est bien calculé exactement à la seconde où l'on estime chaque bateau.

Calcul de la distance parcourue depuis la dernière vacation

(dans les 10dernières minutes donc).

Ajout de ce "vecteur de déplacement" à la dernière position du bateau.

Là, il y a plusieurs tests :

  • le bateau coupe-t'il la ligne d'arrivée ?
    • Si oui, il est sorti de la course et son classement est enregistré dans la table "classement définitif" (table "races_results")
    • le bateau coupe-t'il un point de passage ? Si oui, mise à jour du prochain point de passage dans la table "users" (qui deviendra

"boats" lorsqu'un "user" poura (bientot) gérer plusieurs bateaux.

    • pour le cas précédent et son contraire, on cherche à savoir si le bateau coupe un trait de côte :

XX= recherche des deux points de trait de côte les plus proches, et s'ils appartiennent au même trait de côte (il faut tout de même pouvoir passer dans les goulets), on vérifie si le bateau a coupé le segment défini par ces deux points. =XX

Info : le segment de distance parcouru par le bateau depuis sa dernière position est découpé en 25 sous-segments, et le traitement XX=...=XX est effectué pour chacun des sous-segments.


Enregistrement de la nouvelle position

  • Calcul des distances parcourues sur 1h, 3h, et 24h (amélioration en cours et à venir)
  • Enregistrement de la position et surtout de la distance restant à parcourir

jusqu'au prochain point de passage dans la table "classement temporaire" (table "races_ranking")(c'est celle qui est utilisée pour l'affichage des classements de bateaux en course).

  • Au passage, cela explique pourquoi il y a des "sauts de 1 mille ou un

peu plus" si l'on raffraîchit la page des classements PENDANT les mises à jour.

Généralité sur l'éxécution

C'est exécuté sur le serveur qui gère la base de données et le moteur. Le traitement est lancé toutes les 5 minutes, et prend chaque bateau 1 par 1, dans l'ordre de leur numéro.

Cela explique pourquoi, juste à la première vacation, certains bateaux (les plus gros numéros) ont pu avancer légèrement plus que les bateaux ayant des numéros plus faibles. (les derniers ont eu "3 minutes" de parcours entre le départ et la première vacation, alors que le plus petit numéro a eu une demi-seconde maxi.)

Mais pour toutes les mises à jour, on peut supposer qu'il se passe environ 5 minutes pour tout le monde entre 2 vacations. Afin de classer N bateaux arrivant dans la même vacation, le traitement d'enregistrement dans la table "races_results" calcule le timing précis de coupure de la ligne. (C'est la belle fonction doTheyCross qui renvoie le cas échéant les coordonnées où la ligne a été coupée, il est donc simple de ramener la distance entre la dernière position et ce point à un temps de parcours pour cette distance). La vitesse au moment de la coupure de la ligne est celle prise en compte pour ce calcul.

Coté interface

Le vent affiché (dans VLM10 et VLM20 et entre le < et le > du régulateur) est évalué à chaque raffraîchissement de la page, ainsi que la vitesse prévisible (Speed et VMG dans VLM100 et entre le < et le > du pilote auto)

Ce qu'on peut dire, c'est que le vent et la vitesse du bateau au moment de l'exécution du moteur sont quasiment ceux qu'on peut voir si on raffraîchit la page "Mon bateau" pile au moment où le moteur s'exécute pour un bateau donné.