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

Mathématiques Discussion :

Segments de droites à partir de points


Sujet :

Mathématiques

  1. #1
    Membre confirmé Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Points : 513
    Points
    513
    Par défaut Segments de droites à partir de points
    Bonjour,
    dans une application mes utilisateurs doivent pouvoir tracer des espèces de droites au stylet.
    Lorsque le stylet se lève et que l'utilisateur a 'dessiné' ce qu'il veut, je me retrouve avec un certain nombre de points, définis par des coordonnées X et Y, correspondant aux tracés relevés.
    Je dois ensuite dessiner des segments de droites correspondants, sachant que les droites peuvent être uniquement parallèles ou perpendiculaires à l'axe des abscisses.

    Ma question est donc, quelle serait la meilleure manière de déterminer ces segments de droites à partir d'une collection de points plus ou moins bien dessinés par l'utilisateur (je dispose de l'ordre dans lequel les points ont été tracés) ?

    D'abord déterminer des courbes, et ainsi appliquer des transformations points de courbure/point d'angle ? Ou faire des moyennes, écart-types etc. ?

    Echantilloner en déterminant les tendances (plus vertical qu'horizontal de tel point à tel point, puis moyenne des coordonnées Y etc) ?

    Merci de votre aide...

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    les droites peuvent être uniquement parallèles ou perpendiculaires à l'axe des abscisses
    Formulé comme dans ton message, ton problème est insoluble: comment veux-tu relier par un segment parallèle à un des axes des points P1(x1,y1) et P2(x2,y2) si x1 est différent de x2 et y1 de y2?
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  3. #3
    Membre confirmé Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Points : 513
    Points
    513
    Par défaut
    En fait je cherche à trouver les segments de droites parallèles/perpendiculaires qui correspondraient le plus à ce que l'utilisateur a tracé, sachant qu'aucun être humain normalement constitué ne peut tracer qu'exclusivement ce type de traits sans faire d'approximations.
    Je cherche donc une méthode/algo pour déterminer les segments les plus près de ce qu'a voulu faire l'utilisateur.

    ex. pour un seul segment si j'ai
    point1 => x =10, y=20
    point2 => x = 12, y=20
    point3 => x=13, y=21
    point4 => x=16, y=19

    je trace une droite qui va du point (10, 20) au point (16, 20), et donc parallèle aux abscisses.

    Maintenant mon souci c'est qu'en un seul tracé (du contact du stylet au relevé de ce dernier), l'utilisateur peut changer de direction pour tracer de multiples segments. Je cherche à reconnaître tous les segments.

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Il faudrait commencer par simplifier les tracés (retirer les points inutiles) par exemple avec l'algo de Douglas-Peucker.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre confirmé Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Points : 513
    Points
    513
    Par défaut
    Pseudocode,
    Ca m'a l'air dêtre un excellent point de départ. Je vais potasser ça, et quand j'ai la solution entière je la poste.
    Merci !

  6. #6
    Membre confirmé Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Points : 513
    Points
    513
    Par défaut
    Je suis arriver à approcher le comportement que je voulais, il reste quelques améliorations à faire mais niveau algo j'ai ce que veux.

    En fait je fais une réduction grâce à l'algo de Douglas-Peucker suggéré par Pseudocode ; ensuite je boucle sur la collection de points résultante de la manière suivante :

    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
    17
    18
     
     
    Liste_de_points CollectionFinale;
     
    Point dernierPoint;
     
    Pour Chaque Point p dans CollectionReduite
        Si dernierPoint est égal à p
            Continuer;
        Fin Si
        Si ValeurAbsolue(p.X - dernierPoint.X) <= ValeurAbsolue(p.Y - dernierPoint.Y) 
            dernierPoint.Y devient p.Y
        Sinon
            dernierPoint.X devient p.X
        Fin Si
     
        CollectionFinale.Ajouter(dernierPoint)
    Fin Pour
    Merci !

  7. #7
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    De rien. Ça m'a fait plaisir.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  8. #8
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    ça serait pas plus simple de le faire à la saisie (fonction "snapping") ?

    l'utilisateur pointe quelque chose, le point vient se mettre au plus proche qui est OK ?
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. Méthodes d'extraction de segments à partir de points contours
    Par K@rim dans le forum Traitement d'images
    Réponses: 9
    Dernier message: 08/12/2009, 11h41
  2. Distance d'un point à un segment de droite
    Par defluc dans le forum Mathématiques
    Réponses: 63
    Dernier message: 07/09/2009, 23h49
  3. Droit d'un point de montage ?
    Par byloute dans le forum Administration système
    Réponses: 1
    Dernier message: 30/03/2006, 12h10
  4. Formes geométriques a partir de points
    Par xavibla2 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 22/11/2005, 11h40
  5. Réponses: 2
    Dernier message: 16/07/2005, 08h12

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