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 :

Contraction d'un polygone


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Points : 67
    Points
    67
    Par défaut Contraction d'un polygone
    Bonjour,

    J'essaye depuis quelque jours de réaliser la contraction d'un polygone qui peut être concave, mais ne présente pas de trous et n'est pas croisé. La contraction comme je l'entend fait que si on prend le projeté orthogonal de n'importe quelle point du périmètre du nouveau polygone sur l'ancien polygone, on a une distance d'au moins shift (i).

    J'ai pensé à plusieurs solutions, dont une est la réduction (dans le sens géométrique, réduction des dimensions) du polygone, en déterminant le centroïde et en réduisant la distance centroïde-sommet sur chaque point de manière proportionnelle (la proportion étant calculée préalablement telle qu'on respecte (i).
    Malheureusement, cette solution ne semble marcher que sur des polygones convexes, avec comme contre-exemple si deux points sont dans le même axe par rapport au centroïde, il n'y aura pas "contraction" du segment reliant ces deux points.

    Une autre solution possible est de procéder segment par segment, en translatant les deux points par un vecteur d'angle perpendiculaire à celui du segment et de module shift. Seulement je ne vois pas comment déterminer l'angle + ou - 90° tel que le nouveau segment soit vers l'intérieur du polygone. Il faut aussi penser à faire l'intersection des deux points ainsi créés pour un sommet du polygone initial.

    Je suis un peu bloqué sur la direction à prendre et compte sur tout point de vue nouveau sur le sujet :-)

    (Si vous ne comprenez pas certaines de mes explications, n'hésitez pas non plus à demander je suis pas forcément très clair).


    Edit : ah bah j'avais point vu, on parle de l'exterieur juste en dessous. Suffit que je sache dans quel sens mon polygone tourne et la solution est ici
    Subject 2.07: How do I find the orientation of a simple polygon?

    Compute the signed area (Subject 2.01). The orientation is counter-clockwise if this area is positive.
    Maintenant il faudrait savoir si l'intersection est facile à faire et si la solution est optimale.

  2. #2
    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
    Ton problème ressemble beaucoup a celui là : http://www.developpez.net/forums/d75...trigonometrie/
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Points : 67
    Points
    67
    Par défaut
    Effectivement, merci pour le lien.

    D'ailleurs ta remarque est pertinente, est-ce qu'en connaissant la bissectrice, on a à coup sur la droite sur lequel est le point (extérieur/)intérieur ?

    Après, calculer la longueur n'est qu'une question de trigo.

  4. #4
    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
    le problème de fond est :

    ton problème est-il correctement posé ??

    1. Soit tu veux "shrinker" ton polygone

    2. Soit tu veux le diminuer d'une certaine distance



    Dans le cas 1, ta première méthode marche parfaitement.. Je suppose que si elle ne marche pas, c'est que tu t'es trompé dans la détermination du facteur de zoom ou du centroide...
    "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

  5. #5
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Points : 67
    Points
    67
    Par défaut
    Number two.

    Je pensais que ça revenait au même, mais en effet, un "shrink" ou "contraction" comme je l'avais appelé ne fait pas ce que je veux, c'est à dire une translation intérieure.

    Par contre, le problème posé dans les deux liens correspond plus, je vais voir ce que ça peut donner.

  6. #6
    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
    OK

    Citation Envoyé par Luigicube Voir le message
    D'ailleurs ta remarque est pertinente, est-ce qu'en connaissant la bissectrice, on a à coup sur la droite sur lequel est le point (extérieur/)intérieur ?
    oui


    Sauf dans le cas où ce point disparait car les points/côtés des sommets précédents/suivants le font disparaître..
    "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

  7. #7
    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
    Je n'ai peut-être pas compris le problème, mais pourquoi

    - ne pas appliquer une homothétie de rapport <1 de centre l'origine sur ton polygone P0 pour obtenir P1, les polygones sont alors semblables
    - calculer les centroïdes C0 et C1 de P0 et P1, et translater P1 de vecteur C1C0

    ?
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  8. #8
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Points : 67
    Points
    67
    Par défaut
    Je pense que ce que tu proposes ramène à faire la solution 1, qui est une contraction/shrink.

    Dans ce que je veux faire, au final, les polygones pourront ne plus être semblables. Dans certains cas (p.ex. polygones convexes), ça revient à faire un shrink, mais pas dans tous.

    Je finis d'essayer la solution 2. avec les bissectrices et je mets résolu

  9. #9
    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
    Citation Envoyé par henderson Voir le message
    Salut !
    ..
    A plus !


    C'est ce qu'on a tous dit, mais c'est pour l'hypothèse 1 mentionnée plus haut ("zoom" ou "dezoom" d'un polygone)..

    Pour le fait d'ajouter/retrancher une distance, qui est ce que veux faire le PO, la discussion citée en référence indique les écueils, et l'approche n'est (malheureusement) pas aussi simple...

    "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

  10. #10
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Points : 67
    Points
    67
    Par défaut
    J'ai pas saisi la citation, c'est normal ?
    Et PO ça veut dire ?

  11. #11
    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
    Citation Envoyé par Luigicube Voir le message
    J'ai pas saisi la citation, c'est normal ?
    Erff... Il a enlevé son message... N'en tiens pas compte...



    Citation Envoyé par Luigicube Voir le message
    Et PO ça veut dire ?
    Posteur Original

    Celui qui a mis le premier post.. (ici c'est toi)
    "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

  12. #12
    Membre du Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Points : 67
    Points
    67
    Par défaut
    Ah bah évidemment si on n'a pas tous les posts.

    Citation Envoyé par souviron
    Posteur Original
    Merci Je me coucherai moins bête.

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

Discussions similaires

  1. Contracter , agrandir un polygone comme paint shop pro
    Par sivaller dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 14/04/2010, 13h21
  2. Comment detecter un polygon sous le curseur
    Par FreshVic dans le forum OpenGL
    Réponses: 2
    Dernier message: 04/07/2003, 10h48
  3. Triangulation de Polygones
    Par seb_lisha dans le forum DirectX
    Réponses: 1
    Dernier message: 01/07/2003, 12h40
  4. [Algo] Point à l'intérieur d'un polygone ?
    Par kebby dans le forum C++Builder
    Réponses: 5
    Dernier message: 23/05/2003, 13h22
  5. une ligne et un polygone convexe
    Par rekam dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 20/12/2002, 10h39

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