Calcul de navigation

Modérateur : Admin bis

Avatar de l’utilisateur
blzblz
développeur
Messages : 3212
Inscription : 16 oct. 2014 21:05
Contact :

Re: Calcul de navigation

Message par blzblz » 10 oct. 2019 23:05

ce sujet (sans débordement) est recevable;

ça n'empêche en rien de jouer actuellement dans la bonne humeur et avec enthousiasme;

merci pour tous vos conseils éclairés;

plutôt que changer fondamentalement les formules de calcul d'avancement des bateaux, nous devrions peut-être simplement augmenter la vitesse des bateaux des environ 5% pour coller à vos calculs scientifiques sur le plancher des vaches ?
réflexion à venir, cela touche plusieurs fichiers qui doivent être modifiés en même temps;
faisable bien que toujours un peu touchy à mettre en place en même temps (bugs à venir et à corriger)...

certains joueurs sont sans pitié, nous leur offrons toutes les couleurs, bruits et odeurs désirés, mais ils continuent à exiger notre rectitude (don't troll plz);
une course sur Titan ou Saturne ou bien à l'horizon d'un trou noir (pas le mien trop brouillardeux) sera ouverte prochainement afin de pouvoir satisfaire vos envies de calcul;
ainsi que quelques petites surprises amusantes pour entretenir la bonne humeur, mais chuuuuuuuuuut :twisted:

Avatar de l’utilisateur
limelight
Joueur
Messages : 749
Inscription : 22 août 2019 10:15
Localisation : Melbourne, Australia
Contact :

Re: Calcul de navigation

Message par limelight » 11 oct. 2019 12:52

Mais moi je voudrais bien savoir où est l'erreur. Les formules différentielles de Z* marcheront bien si le pas du temps est petit, mais elles finiront par dévier. Les miennes sont meilleures car j'ai fait l'intégration rigoureusement donc même si l'interval de temps est trés long, elle donne encore le résultat exact.

Dire que la planète a un diamètre différent de la terre est contredit par les distances publiées dans les classements.

Changer la vitesse des bateaux par l'inverse de 0.954 est une solution... mais pourquoi ne pas chercher l'erreur?

Peut on publier le code qui fait les calculs ici, qu'on le regarde tous?
Check https://madinstro.net/rg/ for handy navigation tools.

Avatar de l’utilisateur
blzblz
développeur
Messages : 3212
Inscription : 16 oct. 2014 21:05
Contact :

Re: Calcul de navigation

Message par blzblz » 11 oct. 2019 15:46

Hello John ;)

J'ai monté une petite page qui reproduit le calcul d'itération, c'est là:

http://regattagame.org/rg_maintenance/c ... cul_01.php

Rentrer la latitude et la longitude de départ (en degrés décimaux), le cap (en degrés) et la vitesse (en noeuds), puis bouton "calculer"...
Pour cette page de test, la durée d'itération est d'une heure.

Le code faisant le calcul est en dessous. C'est en php. Si certaines fonctions mathématiques ne sont pas explicites, il faut aller voir leur doc sur le site: http://www.php.net
(la première ligne commençant par "//" est un commentaire, non pris en compte dans le calcul.)

On constate effectivement qu'avec les données de départ, une itération d'une heure à 60 noeuds le long de l'équateur ne déplace pas de 1° comme on devrait s'y attendre, mais de 0.95492965855137°, ce qui est bien le coefficient que certains d'entre vous avaient trouvé, non ?

Le code du calcul d'itération en mode waypoints est légèrement différent il me semble; j'essaierai de l'extraire au besoin.

Merci de signaler si vous voyez ce qui pourrait clocher dans ces formules.

Sinon à défaut, on pourrait peut-être reprendre les tiennes ou celles de Zedstar.
A savoir qu'il faudrait alors adapter ces formules dans les pages concernant l'affichage de la projection.

Edit: quelques messages hors sujets ont été supprimés de cette discussion afin de la garder la plus claire possible.

Avatar de l’utilisateur
zedstar
Joueur
Messages : 458
Inscription : 23 févr. 2016 14:24
Contact :

Re: Calcul de navigation

Message par zedstar » 11 oct. 2019 17:26

Merci Blaise pour le ménage.

Avec John on utilise des formules loxodromiques, j'utilise une formule linéarisée itérative (pas de temps de 1 minute à 1 heure) qui semble adaptée pour un routeur ou un jeu, lui une formule exacte fonctionnant sur des longues distances. Il faudrait comparer le temps de calcul et l'erreur de position sur plusieurs itérations.

Dans ton exemple Blaise, la formule est orthodromique, navigation sur des grands cercles à chaque ité (d'où le atan2) avec une correction pour éviter la dérive trop voyante cap 90 ou 270 (un parallèle n’étant pas un un grand cercle).

Code : Tout sélectionner

if (($capdepart == 90) || ($capdepart == 270)) {
$latf = $latitudedepart;
}
$dlon = atan2(sin($cap) * sin(-$dis) * cos($lat), cos(-$dis) - sin($lat) * sin($lat));
Le facteur 0.9549 vient de là.

J'ai un dossier là dessus, publié autrefois sur VR :ugeek:

Avatar de l’utilisateur
blzblz
développeur
Messages : 3212
Inscription : 16 oct. 2014 21:05
Contact :

Re: Calcul de navigation

Message par blzblz » 11 oct. 2019 18:03

Okok :)

Bon, Gégé, qui a écrit le code du calcul d'ité, n'ayant pas l'air d'avoir envie de se jeter dedans à nouveau ( ;) ), je vais essayer de faire avancer cette histoire car ça a l'air de bien vous chagriner quand même !

Dans le calculateur Excel de John, je crois que je ne pige pas tout dans la formule de calcul de la longitude d'arrivée:
=SI(MOD(Cap;360)=90; LonA + Distance/60/COS(LatA*PI()/180); SI(MOD(Cap;360)=270;LonA

Ca revient à dire:
si le cap = 90 ou 270, alors longitude d'arrivée = longitude de départ
sinon, longitude d'arrivée = Longitude de départ + distance / 60 / cos(latitude de départ * Pi / 180)

Est-ce bein ça ?

Je vais monter une autre page de calcul pour essayer de faire fonctionner ça en php

Edit: corrigé une confusion latitude / longitude

Avatar de l’utilisateur
blzblz
développeur
Messages : 3212
Inscription : 16 oct. 2014 21:05
Contact :

Re: Calcul de navigation

Message par blzblz » 11 oct. 2019 18:17

En fait je ne comprends pas cette formule du calcul de la longitude d'arrivée, je vais devoir prendre des cours d'excel ! :)
Edit: ok, avec les explications de John sur la page 1, c'est plus clair, en avant !

Avatar de l’utilisateur
blzblz
développeur
Messages : 3212
Inscription : 16 oct. 2014 21:05
Contact :

Re: Calcul de navigation

Message par blzblz » 11 oct. 2019 19:13

Voici un essai de calcul avec les formules de limelight:

http://regattagame.org/rg_maintenance/c ... cul_02.php

Ca a l'air de donner une latitude cohérente avec les caps 0, 90, 180 et 270 et peut-être tous les autres (à vérifier).
Par contre le calcul de longitude est dans les choux avec cap différent de 90 et 270.

En php, de tête, les calculs trigo sont avec des angles en radians, d'où l'utilisation de la fonction "deg2rad" pour les fonction "tan" et "cos".
Par contre il faudrait peut-être faire une conversion pour la fonction acosh ?

Dans le plan ça va, dans l'espace, faut forcer un peu, mais sur une sphère ça me donne un peu le même genre de migraine que maki :)

Merci d'avance si vous avez une idée pour corriger mes boulettes.

Edit: corrigé une double conversion degrées -> radians dans le calcul de longitude, ça a l'air de mieux marcher; confirmation ?

Avatar de l’utilisateur
limelight
Joueur
Messages : 749
Inscription : 22 août 2019 10:15
Localisation : Melbourne, Australia
Contact :

Re: Calcul de navigation

Message par limelight » 11 oct. 2019 19:47

Moi jessayerai qqchose comme ci:

--------------------------------------------------------------------------------------------------
$lat = deg2rad($latitudedepart);
$lon = deg2rad($longitudedepart);
$cap = deg2rad($capdepart);
$dur = 1;
$vit = $vitesse;
$dis = deg2rad ($vit * $dur / 60); // distance in degrees = nautical miles / 60
///// calcul ités /////
//$arr = asin(sin($lat) * cos($dis) + cos($lat) * sin($dis) * cos($cap));
$arr = $lat + $dis * cos($cap);
$latf = rad2deg($arr);
if ($capdepart == 90) {
$dlon = $dis / cos($lat);
} elif ($capdepart == 270) {
$dlon = - $dis / cos($lat);
}else {
$dlon = tan($cap) * (acosh(1/cos(lat)) - acosh(1 / cos($arr))) ;
}


$lngf = rad2deg( $lon + $dlon);

$latitudearrivee = $latf;
$longitudearrivee = $lngf;
Check https://madinstro.net/rg/ for handy navigation tools.

Avatar de l’utilisateur
limelight
Joueur
Messages : 749
Inscription : 22 août 2019 10:15
Localisation : Melbourne, Australia
Contact :

Re: Calcul de navigation

Message par limelight » 11 oct. 2019 20:02

Il faut être certain que le cap est toujours entre 0 et 360. C'est pour ça que j'ai utilisé la fonction MOD(cap,360) dans excel ... mais j'ai oublié le tan(cap) dans la formule (je l'ai mise dans le php). J'ai vérifié que "acosh" existe dans la librairie des fonctions math de PHP.

Je répare la formule dans excel et je remet le fichier en ligne.
Check https://madinstro.net/rg/ for handy navigation tools.

Avatar de l’utilisateur
blzblz
développeur
Messages : 3212
Inscription : 16 oct. 2014 21:05
Contact :

Re: Calcul de navigation

Message par blzblz » 11 oct. 2019 20:03

Here is your code, John:

http://regattagame.org/rg_maintenance/c ... cul_03.php

It seems to be ok for the latitude, but not for longitude.

NAN means "Not A Number"
But what means "INF" ???

Oops, sorry, writen in english :(

Edit: ok, bien noté que le cap doit être compris entre 0 et 359

Répondre

Revenir à « Rapportez les bugs »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités