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 :

Polygone : Détecter le sens de déclaration des points !


Sujet :

Mathématiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Par défaut Polygone : Détecter le sens de déclaration des points !
    Salut à tous !

    Je créer un petit module qui prend en charge la conversion des géométries de NetTopologySuite vers MapWinGIS. Si vous ne connaissez pas, cela n'a aucune importance.
    Un polygone est composé d'une seule (et obligatoire) ligne décrivant l'extérieur et de zéro, une ou plusieures ligne décrivant d'éventuels polygones intérieures.
    Il existe une convention qui dit que les points de la ligne extérieure d'un polygone doivent être déclarés dans le sens inverse des aiguilles d'une montre alors que les points décrivant une ligne intérieure doivent être déclarés dans le sens des aiguilles d'une montre. (Voir pièce jointe)
    Savez-vous, à partir d'une liste de points, comment "détecter" leurs sens de déclaration, sachant qu'on ne peux pas se baser sur les quelques premier points mais, il me semble, sur l'ensemble des points.
    Quand je dis liste de points, c'est la liste pour un seul polygone mais j'aimerai pouvoir savoir si il est extérieur ou intérieur !

    Merci de vos réponse et @ très vite !
    Antoine
    Images attachées Images attachées  

  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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Bonjour

    Essaye le signe du produit vectoriel de 3 points consecutifs
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 118
    Par défaut
    Est-ce que les polygones sont convexes ? Si oui, pseudocode a une solution parfaite.

    Si non, il faudrait trouver un point O à l'intérieur du polygone, et faire la somme des angles orientés Pn->O->Pn+1. Le signe de la somme de donne l'orientation du polygone (avec Pn points du polygone évidemment).

    Une méthode pour tester si un point est à l'intérieur d'un polygone : faire de nouveau la somme des angles orientés par rapport à ce point. Si c'est nul, tu es à l'extérieur du polygone.

    Et enfin, comment trouver un point dans un polygone à coup sûr ? Ben là, je ne vois pas trop de méthode directe. Tester deux points à une distance d de par et d'autre d'un segment du polygone. Si les deux sont à l'extérieur, recommencer avec d/2. On finira forcement par tomber sur un point à l'intérieur du poly. Encore faut-il prendre en compte des cas particuliers du genre deux segments superposés, ou des segments qui se coupent. Ca ne me semble pas si évident que ça. Je ne vois rien de mieux là tout de suite... Mais il existe surement une solution plus élégante.

  4. #4
    Membre émérite
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    salut,

    une solution : calculer l'aire signée du polygone (cf formule donnee dans http://local.wasp.uwa.edu.au/~pbourk...try/polyarea/).
    Si l'aire est positive, le polygone est oriente dans le sens inverse des aiguilles d'une montre.

  5. #5
    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 : 84
    Localisation : Suisse

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut Polygone: détecter le sens de déclaration des points
    Salut.
    Soient i, j et k les vecteurs unités sur les axes Ox, Oy, Oz d'un repère cartésien direct, Oxy étant le plan de ta figure. Tu définis un champ vectoriel V=x*j. Son rotationnel est partout égal à 1*k, puis tu appliques le théorème d'Ampère-Stokes.
    Bonne chance!
    Jean-Marc Blanc

  6. #6
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut Ze Polygon Orientation Contest
    <HS> Je propose d'organiser un concours sur les methodes permettant de determiner l'orientation d'un polygone </HS>
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Expert confirmé

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par fumidu
    Et enfin, comment trouver un point dans un polygone à coup sûr ? Ben là, je ne vois pas trop de méthode directe. Tester deux points à une distance d de par et d'autre d'un segment du polygone. Si les deux sont à l'extérieur, recommencer avec d/2. On finira forcement par tomber sur un point à l'intérieur du poly. Encore faut-il prendre en compte des cas particuliers du genre deux segments superposés, ou des segments qui se coupent. Ca ne me semble pas si évident que ça. Je ne vois rien de mieux là tout de suite... Mais il existe surement une solution plus élégante.
    Trouver le point le plus bas à droite (par exemple) : P0.

    P1 et P2 les 2 sommets adjacents. d1 et d2 les 2 distances P0P1 et P0P2. Alpha angle P1P0P2.

    Prendre le point situé à alpha/2, (d1+d2)/2 (ou d2/2)

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/12/2013, 09h39
  2. [Débutant] détecter des points particuliers sur une image en couleur
    Par neophyte66 dans le forum Images
    Réponses: 1
    Dernier message: 04/10/2012, 15h44
  3. Managed DLL : déclaration des points d'entrée
    Par zeiht dans le forum Framework .NET
    Réponses: 1
    Dernier message: 06/06/2007, 16h31
  4. calculs des points
    Par rabi dans le forum OpenGL
    Réponses: 11
    Dernier message: 12/02/2004, 10h03

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