Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2831 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  WGS84 : calcul point d'intersection de 2 segments en 3D (lat/lng/alt)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

WGS84 : calcul point d'intersection de 2 segments en 3D (lat/lng/alt)

n°2326146
rufo
Pas me confondre avec Lycos!
Posté le 13-12-2018 à 17:34:34  profilanswer
 

Bonjour,
Je galère pour trouver un algo permettant de calculer, en WGS84, l'intersection de 2 segments dont les extrémités sont des points avec leurs coordonnées exprimées en latitude, longitude ET altitude.
J'ai bien trouvé qq sites traitant de calculs en géodésie :
https://www.codeguru.com/cpp/cpp/al [...] ations.htm
http://www.movable-type.co.uk/scripts/latlong.html
Mais c'est qu'en 2D :(
 
Y'a bien ce site : https://github.com/michaelosthege/T [...] s/issues/2
Mais je suis pas bien sûr de comprendre ce qu'il faut faire. J'ai l'impression qu'ils passent par une transformation en coordonnées cartésiennes pour faire les calculs d'intersection.
 
De votre côté, vous n'auriez pas un site qui file directement l'algo pour calculer cette intersection en tenant compte de l'altitude, svp ?
Merci par avance :jap:


Message édité par rufo le 13-12-2018 à 18:02:38

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
mood
Publicité
Posté le 13-12-2018 à 17:34:34  profilanswer
 

n°2326162
MaybeEijOr​Not
but someone at least
Posté le 13-12-2018 à 20:08:07  profilanswer
 

Je ne sais pas s'il existe des algos ou non.

 

Pour l'instant ça n'a rien à voir avec WGS84 ou non, mais attention, si tes segments sont définis par uniquement 2 points, les intersections seront possibles que si tes points se trouvent dans un même plan. Un léger décalage des plans ferait en sorte que tes segments ne se croisent pas. Il faut donc probablement commencer par imaginer que tes segments soit en fait des cylindres. Cela risque de compliquer énormément le problème, pour le simplifier, il faut, je le pense faire les calculs avec uniquement des valeurs arrondies. L'arrondi, définissant l'épaisseur du segment.

 

Voilà, voilà, je n'ai pas de réponse, mais je complique le problème. :whistle:
Enfin, ma solution évoquée, si elle fonctionne ne complique plus vraiment le problème. :)

 

Sinon, la conversion des coordonnées WGS84 en données cartésiennes permet d'effectuer le calcul d'intersection plus facilement, le tout étant de trouver la bonne conversion. Une fois que tu as des x, y et z c'est le calcul d'intersection de segments dans l'espace.

 

EDIT : il y a un calcul de conversion WGS84 to x,y,z ici : https://gist.github.com/govert/1b373696c9a27ff4c72a


Message édité par MaybeEijOrNot le 13-12-2018 à 20:15:27

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2326164
rufo
Pas me confondre avec Lycos!
Posté le 13-12-2018 à 20:31:25  profilanswer
 

Pour la conversion, j'avais déjà trouvé des algos.
 
Ayant déjà calculé l'intersection de 2 segments en 2D, je me dis que ce point est sans doute le projeté de l'intersection en 3D. Du coup, il suffit sans doute de calculer l'altitude de ce point sur chacun des 2 segments et vérifier que l'altitude est la même (à un arrondi près par ex). Si elle est trop différente, c'est que les 2 segments ne se croisent pas.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2326167
MaybeEijOr​Not
but someone at least
Posté le 13-12-2018 à 20:50:30  profilanswer
 

1- Tu calcules tes vecteurs directeurs (soustraction des coordonnées cartésiennes des deux points définissant ton vecteur).
 
2- http://homeomath2.imingo.net/geoesp8.htm
 
3- 3 cas possibles :
- Un seul point d'intersection est trouvé, tu vérifies qu'il appartient bien à chacun de tes segments, auquel cas il y a intersection sinon il n'y a pas d'intersection.
- Infinité de points d'intersections, tu vérifies qu'au moins une extrémité d'un de tes segments appartienne à l'autre segment, auquel cas il y a intersection sinon il n'y a pas d'intersection.
- Aucun point d'intersection trouvé, il n'y a pas d'intersection.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2326173
rufo
Pas me confondre avec Lycos!
Posté le 13-12-2018 à 21:47:10  profilanswer
 

Ce que tu me proposes est l'algo que j'ai trouvé ici : https://github.com/michaelosthege/T [...] s/issues/2
On passe par les coordonnées cartésiennes puis une résolution de système linéaire.
 
Mais penses-tu que l'algo que j'ai énoncé dans mon précédent post est juste ? Ca me ferait moins développer puisque j'ai déjà l'algo pour calculer l'intersection de 2 segments. J'aurais plus qu'à calculer l'altitude de la projection de ce point d'intersection sur les 2 segments et voir s'ils ont la même altitude (à +/- qq mètres près).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2326191
MaybeEijOr​Not
but someone at least
Posté le 14-12-2018 à 10:48:12  profilanswer
 

Pour commencer, on peut éliminer mon idée d'arrondir les coordonnées, ça crée bien un espace discontinu au niveau des points mais les segments restent définis sur un espace continu. Doit surement y avoir un moyen de travailler sur un espace discontinu mais ce doit être très compliqué.
 
Il faut donc en effet travailler autrement. Dans tous les cas il faut commencer par la conversion WGS84 vers cartésien.
 
1- conversion
 
2- Projection des points sur un plan 2D (O,x,y)
 
3- calcul des vecteurs directeurs (soustraction des coordonnées des points définissant le segment)
 
4- calcul de l'intersection des droites définies par les vecteurs directeurs
 
5- si pas d'intersection, reprendre au point n°2 en changeant de plan de projection (O,x,z) ou (O,y,z)
 
6- si aucune intersection, ben aucune intersection
    si intersection, vérifier qu'elle ait bien lieu sur chacun des segments définis :

  • 1 point d'intersection : vérifier qu'il appartienne aux deux segments (choisir un delta d'erreur pouvant être accepté) sinon pas d'intersection
  • infinité de points d'intersection : vérifier qu'au moins une extrémité du segment le plus court appartienne au second segment (choisir un delta d'erreur pouvant être accepté) sinon pas d'intersection


7- si intersection, calculer la position du point d'intersection sur chaque segment dans l'espace 3D puis calculer la distance entre les deux points (choisir un delta d'erreur pouvant être accepté)


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  WGS84 : calcul point d'intersection de 2 segments en 3D (lat/lng/alt)

 

Sujets relatifs
Calcul du volume de certains sous-dossiersC++ calcul d'un nombre prmier
[RESOLU]Excel calcul des jours de gardeCompte rendu DareBoost, calcul performance de mon site web
calcul de checksum (réglé)Calcul durée entre 2 dates et heures
Calcul points de plusieurs events et membres[PHP] SQL_SRV ne fonctionne point :(
Formulaire Calcul HTML Javascript Help! 
Plus de sujets relatifs à : WGS84 : calcul point d'intersection de 2 segments en 3D (lat/lng/alt)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR