IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Détecter si deux trajets se croisent


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut Détecter si deux trajets se croisent
    Bonjour,
    Je ne suis pas sûr d'être dans la bonne section, si ce n'est pas le cas je m'en excuse.
    Voila, je possède deux paires de coordonnées GPS, disons A, B, C et D. Pour chaque point je connais les coordonnées latitude et longitude. Je cherche à savoir si le trajet A -> B croise le trajet C -> D. Je sais qu'il existe un algorithme assez complexe (du moins pour moi) permettant de calculer le point d'intersection, mais je n'ai pas besoin de connaitre ce point, uniquement si oui ou non les deux se croisent. Je cherche à simplifier la détection car je suis assez limité en temps machine sur le microcontrôleur qui fera le calcul, donc si quelqu'un connait un algorithme qui permet ceci, ou bien simplement une idée.
    D'avance merci pour toute aide apportée.

    ps : à titre d'information je travail en C++.
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  2. #2
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Par défaut
    Comment définis-tu les trajets entre deux points ?

  3. #3
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut
    Ce sont des lignes "droites" (des arcs en réalité vu la courbure de la terre). Ce n'est pas un trajet qui suit des routes ou autres.
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  4. #4
    Membre Expert

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Billets dans le blog
    9
    Par défaut Detecter si deux trajets se croisent.
    Bonjour,

    C'est un problème de trigonométrie sphérique. La position de tout point (M) de la surface terrestre étant définie dans un repère géocentrique direct dont le premier axe (Ox) passe par le point de l'équateur de longitude nulle, et le troisième (Oz) par le pôle Nord, ses coordonnées cartésiennes s'expriment en fonction de longitude (Phi) et latitude (Theta) par les relations:
    xM = R*cos(Theta)*cos(Phi) ,
    yM = R*cos(Theta)*sin(Phi) ,
    zM = R*sin(Theta) .

    L'arc (AB) appartient à un cercle équatorial de la sphère terrestre, de normale: NAB = OA×OB ,
    l'arc (CD) appartient à un autre cercle équatorial de normale: NCD = OC×OD ,
    en supposant leurs extrémités (A,B et C,D) non diamétralement opposées.

    Si de plus les quatre points (A, B, C, D) ne sont pas coplanaires - ce qui conduirait à deux vecteurs (NAB, NCD) colinéaires - alors il existe deux points d'intersection (I et J), extrémités du diamètre commun aux deux cercles et simultanément orthogonal aux vecteurs (NAB) et (NCD).
    L'orientation dans l'espace de la droite (IJ) est donnée le produit vectoriel N1 = NAB×NCD ; en convenant de noter (N1) la norme ║N1║ de ce dernier vecteur, on parvient à exprimer la position des points d'intersection par la relation: OI (ou OJ) = ±(R / N1)*N1 .

    Reste à déterminer les angles polaires correspondants, permettant de situer les points d'intersection relativement aux extrémités des arcs (AB) et (CD), par l'exploitation appropriée les produits scalaires et vectoriels:
    OA·OI = R2*cos(iA) ; ║OA×OI║ = R2*│sin(iA)│ ;
    OA·OJ = R2*cos(jA) ; ║OA×OJ║ = R2*│sin(jA)│ .

    Une réponse d'une concision remarquable a été apportée à un problème voisin, lors d'un échange récent sur un grand forum pour développeurs.

  5. #5
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Par défaut
    Tu considères la terre comme une sphère ou une ellipsoïde ?

  6. #6
    Membre Expert

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Billets dans le blog
    9
    Par défaut Detecter si deux trajets se croisent.
    Comme une sphère de rayon R. C'est assez compliqué comme ça !

    C'est un problème de trigonométrie sphérique ...
    ... L'arc (AB) appartient à un cercle équatorial de la sphère terrestre ...
    L'essentiel, c'est de savoir bien lire un texte.

  7. #7
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut
    Merci wiwaxia pour toutes ces informations, je vais prendre le temps d'essayer de comprendre tout ça. je reviendrais si quelque chose m'échappe.
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Une solution plus simple (je pense )

    Je pense que le PO ne parle pas dans l'absolu (trigo sphérique ou ellipsoidique) mais par rapport à une certaine vue ou projection..

    Dans ce cas, le meux est de transformer les coordonnées en coordonnées rectangulaires avec les équations adhoc, vérifier si les segments s'intersectent...


    Mais peut-être que je me trompe....

  9. #9
    Membre très actif
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Par défaut
    Sur une sphère les "droites" sont des grands cercles et deux "droites" se coupent toujours en 2 points opposés.
    Wiwaxia a bien décrit le calcul des points d'intersection. Faut-il voir s'ils sont dans les plus courts des deux segments de chaque paire de points ?
    @souviron : si les deux points ne sont pas très proches, la "droite" en projection Mercator est une courbe compliquée ...

  10. #10
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Par défaut
    Citation Envoyé par wiwaxia Voir le message
    Comme une sphère de rayon R. C'est assez compliqué comme ça !



    L'essentiel, c'est de savoir bien lire un texte.
    La question était pour l'auteur

  11. #11
    Membre Expert

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par CliffeCSTL Voir le message
    La question était pour l'auteur
    @ CliffeCSTL: Désolé pour ce malentendu; la question m'avait sur le coup sidéré, et j'avais pris cela pour de la provoc'.
    Ma réaction était donc infondée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/07/2011, 17h25
  2. Réponses: 5
    Dernier message: 13/02/2008, 10h15
  3. Détecter les lignes identiques entre deux matrices
    Par totovich dans le forum MATLAB
    Réponses: 5
    Dernier message: 17/04/2007, 09h42
  4. [Javascript] Détecter collision de deux objets <img>
    Par Invité4 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/04/2006, 08h54
  5. Réponses: 23
    Dernier message: 23/01/2006, 21h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo