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 :

algo de convexité


Sujet :

Algorithmes et structures de données

  1. #1
    nkd
    nkd est déconnecté
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 38
    Points : 29
    Points
    29
    Par défaut algo de convexité
    Bonjour les amis

    je crée des polygones et je voudrais mettre en place un algo qui permettrait de savoir si ce dernier est convexe.

    Comment pourrai-je m'y prendre ?
    merci

  2. #2
    Membre actif Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Points : 281
    Points
    281
    Par défaut
    un peu bourrinement, tu peux calculer l'enveloppe convexe des points en question (algorithme de Graham en n.logn par exemple), et ensuite qu'il s'agit bien du polygone considéré. Sinon, c'est que celui-ci ne peut être convexe.

    attention aux angles plats dans ton polygone, fais en sorte que ton algorithme d'enveloppe convexe ne 'saute' pas le point du milieu si 3 pts sont alignés, sinon tu pourras pas le comparer directement avec ton polygone.
    I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06

  3. #3
    Membre habitué Avatar de PINGOUIN_GEANT
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 149
    Points : 155
    Points
    155
    Par défaut
    perso, je testerais les angles pour chaque sommet, dès qu'un est rentrant il n'y a plus de convexité.
    avec les produits scalaires et vectoriels cela devrait aller.
    " Tout homme est digne d'un parapluie." Stavroguine dans Les Démons de Dostoïevski.

  4. #4
    Membre actif Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Points : 281
    Points
    281
    Par défaut
    Citation Envoyé par PINGOUIN_GEANT
    perso, je testerais les angles pour chaque sommet, dès qu'un est rentrant il n'y a plus de convexité.
    avec les produits scalaires et vectoriels cela devrait aller.
    sauf s'ils sont tous rentrants sinon en effet, en tournant le long du polygone, n produits vectoriels de segments consécutifs et les composantes z doivent toutes avoir le même signe.
    I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06

  5. #5
    Membre habitué Avatar de PINGOUIN_GEANT
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 149
    Points : 155
    Points
    155
    Par défaut
    Citation Envoyé par Steki-kun
    sauf s'ils sont tous rentrants
    Donne-moi un angle rentrant sur un polygone et je te trace un segment avec des points à l'extérieur du polygone.

    Rq: on peut espérer que le domaine à l'intérieur polygone vérifie la propriété mathématique suivante :
    il se situe localement d'un seul côté de sa frontière.
    " Tout homme est digne d'un parapluie." Stavroguine dans Les Démons de Dostoïevski.

  6. #6
    Membre actif Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Points : 281
    Points
    281
    Par défaut
    c juste pour faire remarquer que fondamentalement, tu ne sais pas à priori dans quel sens va tourner ton polygone, donc angle rentrant (= angle entre 180 et 360 degrés par définition mathématique, qu'on sache de quoi on parle au moins) n'implique pas que le polygone n'est pas convexe. Le problème est de trouver, dans un même parcours, au moins un angle <= Pi et un angle plus grand. Ca c'est une CNS de convexité.
    I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06

  7. #7
    Membre habitué Avatar de PINGOUIN_GEANT
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 149
    Points : 155
    Points
    155
    Par défaut
    Citation Envoyé par Steki-kun
    c juste pour faire remarquer que fondamentalement, tu ne sais pas à priori dans quel sens va tourner ton polygone,
    justement si, pour moi cela n'a pas de sens de définir un polygone et de ne pas savoir où est l'intérieur du polygone, comme ton contour sépare l'espace en 2 parties distinctes.
    Après il faut voir l'implémentation de nkd.
    " Tout homme est digne d'un parapluie." Stavroguine dans Les Démons de Dostoïevski.

  8. #8
    Membre actif Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Points : 281
    Points
    281
    Par défaut
    manque de pot, il se bien que le polygone, ce soit un tableau (voire une liste) de deux coordonnées à chaque fois, le plan se retrouvant alors orienté par l'ordre de tracé (supposons que c'est un tracé de polygone à la souris dans un paint sommaire par exemple), ce qui peut donner le polygone concave au lieu du convexe dans le doute j'ai préféré préciser, ça ne coûte rien
    I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06

  9. #9
    nkd
    nkd est déconnecté
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 38
    Points : 29
    Points
    29
    Par défaut
    merci les amis pour vos contributions

    en effet c'est un polygone tracé depuis la souris dont les sommets sont connus en xy et stockés dans un tableau. il y a bien un sens que je me donne pour le créer.
    vu vos post je crois que j'ai une idée, celle de tester si tous les angles intérieurs ne sont pas rentrant et qu'ils sont tous <=180 °

    je fait le test et je vous fait signe tout de suite
    merci et A+

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 488
    Points : 397
    Points
    397
    Par défaut
    Citation Envoyé par nkd
    en effet c'est un polygone tracé depuis la souris dont les sommets sont connus en xy et stockés dans un tableau. il y a bien un sens que je me donne pour le créer.
    vu vos post je crois que j'ai une idée, celle de tester si tous les angles intérieurs ne sont pas rentrant et qu'ils sont tous <=180 °
    Même sans connaitre le sens de rotation de ton polygone il suffit de vérifier que tous les produits vectoriels Pi-1Pi^PiPi+1 ont même signe (c'est un produit vectoriel de 2 vecteurs, je ne sais pas comment écrire la formule autrement). Ce qui reviens à tester que dans un sens de parcours tous les angles sont soit obtus, soit concaves.

  11. #11
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Bein non.... prend un losange aplati... il n'y a que 2 angles obtus...
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 488
    Points : 397
    Points
    397
    Par défaut
    Citation Envoyé par Nemerle
    Bein non.... prend un losange aplati... il n'y a que 2 angles obtus...
    Arg, grosse bétise de vocabulaire de ma part, je voulais parler de >=180°, ou <= à 180°. Mais le principe énoncé reste valable.

  13. #13
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Citation Envoyé par Nemerle
    Bein non.... prend un losange aplati... il n'y a que 2 angles obtus...
    pourquoi "aplati" :
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  14. #14
    Membre actif Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Points : 281
    Points
    281
    Par défaut
    Citation Envoyé par sovitec
    Même sans connaitre le sens de rotation de ton polygone il suffit de vérifier que tous les produits vectoriels Pi-1Pi^PiPi+1 ont même signe (c'est un produit vectoriel de 2 vecteurs, je ne sais pas comment écrire la formule autrement). Ce qui reviens à tester que dans un sens de parcours tous les angles sont soit obtus, soit concaves.
    c'est quand même exactement ce que j'ai écrit au-dessus (en remplacant obtus par rentrant), donc on chippote, on chippote, mais on en revient au même point =)
    I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 488
    Points : 397
    Points
    397
    Par défaut
    Citation Envoyé par Steki-kun
    Citation Envoyé par sovitec
    Même sans connaitre le sens de rotation de ton polygone il suffit de vérifier que tous les produits vectoriels Pi-1Pi^PiPi+1 ont même signe (c'est un produit vectoriel de 2 vecteurs, je ne sais pas comment écrire la formule autrement). Ce qui reviens à tester que dans un sens de parcours tous les angles sont soit obtus, soit concaves.
    c'est quand même exactement ce que j'ai écrit au-dessus (en remplacant obtus par rentrant), donc on chippote, on chippote, mais on en revient au même point =)
    J'avais lu ta contribution un peu trop en diagonale, tu as parfaitement raison. En fait je répondais surtout au dernier post de nkd.

  16. #16
    Membre actif Avatar de Steki-kun
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 222
    Points : 281
    Points
    281
    Par défaut
    Citation Envoyé par sovitec
    J'avais lu ta contribution un peu trop en diagonale, tu as parfaitement raison. En fait je répondais surtout au dernier post de nkd.
    ha bah je te reproche rien, mais c'est marrant quand même comme on tourne en rond (c'est à ça que ca sert le résolu finalement )
    I'm the kind of guy that until it happens, I won't worry about it. - R.H. RoY05, MVP06

  17. #17
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Citation Envoyé par Trap D
    Citation Envoyé par Nemerle
    Bein non.... prend un losange aplati... il n'y a que 2 angles obtus...
    pourquoi "aplati" :
    Pour "forcer" l'image
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

Discussions similaires

  1. cherche algos Delphi pour : Huffman, R.S.A, D.E.S.
    Par X-Delphi dans le forum Débuter
    Réponses: 3
    Dernier message: 24/08/2002, 18h51
  2. Cherche l'algo crc 16 bits
    Par icepower dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 21/08/2002, 13h27
  3. Algo de calcul de FFT
    Par djlex03 dans le forum Traitement du signal
    Réponses: 15
    Dernier message: 02/08/2002, 17h45
  4. Algo de Hough et ou de Radon
    Par victorracine dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 29/07/2002, 11h09
  5. Recherche algo tree
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 24/05/2002, 13h44

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