Bonjour, j'aurais besoin d'une petite aide mathématiques. Il s'agit de choses simples, mais j'ai un peu du mal là.
Pour un programme, j'utilise des cartes au format d'OpenStreetMap. Le but est d'obtenir des indications très simples sur les routes, telles que «tourne à droite», «virage à 120m», ou autre…
J'arrive à avoir la distance entre deux nœuds, et aussi à calculer l'angle formé par trois nœuds. Cela permet de repérer à quelle distance on se trouve d'un virage, et aussi de savoir si c'est un gros virage ou pas…
Par contre, je n'arrive pas à trouver un moyen mathématique simple pour savoir si il faut tourner à droite ou à gauche.
J'ai trois points avec des coordonnées GPS. Je pars du premier, j'ai un virage au second, pour arriver au dernier. J'aimerais déterminer le sens du virage au second, car pour l'instant, je n'ai qu'un angle (entre 180° pour une ligne droite, et 0° pour un demi tour).
Donc, est-ce que vous avez une idée pour calculer ça ?
# Produit vectoriel
Posté par JoeltheLion (site web personnel) . Évalué à 8.
Nommons tes trois noeuds A,B, et C. Tu fais le produit vectoriel entre AB et BC plongés dans l'espace tridimensionnel, de coordonnées (x1,y1,0) et (x2,y2,0). Si le composante en z du produit vectoriel est positive, il s'agit d'un virage à gauche, sinon il s'agit d'un virage à droite. (à condition que je me sois pas planté sur le signe!)
[^] # Re: Produit vectoriel
Posté par yellowiscool . Évalué à 4.
Merci beaucoup, ça fonctionne parfaitement avec à peine quelques opérations de base.
C'était l'inverse pour le signe, mais rien de grave.
Encore merci \o/
Envoyé depuis mon lapin.
# un bout de piste
Posté par NeoX . Évalué à 2.
tu as deja un bout de solution car
du coup, regarde avec quelques tests, si ca se trouve suivant le sens du virage ton angle va etre positif ou negatif, tu sauras alors s'il est à droite ou à gauche
[^] # Re: un bout de piste
Posté par errno . Évalué à 0.
Il a surement un angle non signé (calculé a partir du produit scalaire).
La solution la plus propre est bien le produit vectoriel cité ci-dessus.
# Mauvais algo
Posté par Kerro . Évalué à 3.
Il manque la moitié des angles possibles dans ton algo de calcul d'angle :-)
Tu devrais avoir de 0° à 360° par exemple. Ou de -180° à +180°, comme tu veux.
Et là, problème résolu.
[^] # Re: Mauvais algo
Posté par yellowiscool . Évalué à 2.
Changer d'algo pour avoir un angle entre 0 et 360° est une solution, mais je préfère utiliser le théorème d'Al-Kashi. Ce n'est pas la précision absolue dans le cas de la cartographie, mais ça simplifie énormément le code.
Je suis allé lire du code de JOSM (un éditeur de cartes OpenStreetMap) pour voir comment il fait pour calculer les angles. C'est vraiment beaucoup plus compliqué, pour un gain de précision négligeable par rapport à mon utilisation.
Envoyé depuis mon lapin.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.