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

C++ Discussion :

distance entre un point et un segment


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Points : 174
    Points
    174
    Par défaut distance entre un point et un segment
    Bonjour,
    j'ai 3 point A(xa,ya,za), B(xb,yb,zb) et C(xc, yc,zc), les deux points A et B forment un segment
    Comment je peux calculer la distance (la plus courte) entre C et le segment AB?

    Merci d'avance

  2. #2
    screetch
    Invité(e)
    Par défaut
    est-ce que ton segment est une droite, ou est ce que c'est vraiment un segment? i.e. est-ce que c'est la distance la plus proche au point A ou B ou un point entre A et B, ou bien la distance entre le point C et n'importe quel point sur une droite qui passe par A, B, C?

  3. #3
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Points : 174
    Points
    174
    Par défaut
    la distance entre le point C et n'importe quel point sur le segment AB
    Merci

  4. #4
    screetch
    Invité(e)
    Par défaut
    http://paulbourke.net/geometry/pointline/ a été le premier résultat sur google.

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    C'est nouveau, c'est chaud, alors vous m'en prendrez bien une louche : Boost.Geometry:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include <boost\geometry.hpp>
    #include <iostream>
     
    int main()
    {
       typedef boost::geometry::model::point<int,3,boost::geometry::cs::cartesian> point_type;
       typedef boost::geometry::model::segment<point_type> segment_type;
       point_type pt(1,2,3);
       segment_type s(
          point_type(3,4,5)
          ,point_type(6,7,8)
       );
       std::cout<<boost::geometry::distance(pt,s)<<"\n";
     
       return 0;
    }

  6. #6
    Membre éprouvé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonsoir,

    Honnêtement 3DArchi, c'est peut être tout frais, mais ça m'a l'air mal barré ce boost::geometry... En l'absence de modèle de précision, avec les différents types de systèmes de coordonnées, j'ai hâte de les voir calculer un buffer qui ne soient pas une BBOX expansée...

    Pour les calculs géométriques robuste avec une modélisation raisonnable, mieux vaut voir du coté de GEOS.

  7. #7
    Membre éprouvé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Points : 1 060
    Points
    1 060
    Par défaut
    [EDIT]Suite à cette réponse originellement dans cette discussion[/EDIT]
    Salut,

    Citation Envoyé par 3DArchi Voir le message
    @bretus : honnêtement, je n'ai regardé Boost.Geometry qu'hier à l'occasion de cette question ... Donc, si GEOS est plus aboutie, en même temps, le cas (projet d'étudiant? stage?) ne nécessite peut être pas d'avoir plus.
    GEOS est en effet plus aboutie et surtout elle dispose d'un modèle de précision qui permet d'assurer une robustesse par snap rounding. Honnêtement, sa robustesse est surprenante (en même temps, elle est largement à travers la cartouche spatiale postgis de postgresql où entre des vraies données).

    Citation Envoyé par 3DArchi Voir le message
    @pyros : il m'a fallu au max 1/4 d'heure pour construire l'exemple (sans avoir jamais avant regardé cette bibliothèque). Donc le lance rocket me parait pouvoir rapidement et simplement se prendre en main.
    C'est tout de même du lance rocket à mon gout si elle n'a pas besoin à terme de plus de fonctionnalité et si elle se moque de voir un point partir dans le décors dans les cas extrêmes.

    Citation Envoyé par 3DArchi Voir le message
    Il en est peut être de même pour GEOS ? Sa prise en main est peut être rapide ? (l'avantage avec Boost, c'est que je n'ai pas eu à compiler de bibliothèque. un #include et c'est joué).
    Je ne trouve pas qu'elle soit spécialement facilement à prendre en main (passage par des fabriques, construction des objets plus fastidieuses qu'avec boost etc...), mais ca reste acceptable pour un projet de taille suffisante. La compilation est relativement simple (pas de dépendance, makefile et projet visual fourni)...

    Bref une lib qui mérite d'être saluée

Discussions similaires

  1. Calcul de distance entre un point et un segment
    Par orland dans le forum Mathématiques
    Réponses: 7
    Dernier message: 03/01/2013, 17h13
  2. Réponses: 1
    Dernier message: 02/01/2013, 16h13
  3. Calcul de distance entre deux points en WGS84
    Par marieR dans le forum Langage
    Réponses: 5
    Dernier message: 03/08/2006, 18h07
  4. distance entre 2 points avec Point2D
    Par mikees dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 09/01/2006, 17h10
  5. Mesure distance entre 2 points d'une image
    Par vexal dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/05/2005, 15h29

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