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 :

Polygones quelconques imbriqués


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2007
    Messages : 172
    Par défaut Polygones quelconques imbriqués
    Bonjour à tous,
    On connaît bien l'algorithme permettant de savoir si un point se situe à l'intérieur d'un polygone.
    Existerait-il un algorithme déterminant si un polygone est à l'intérieur d'un autre polygone?
    Je précise que les polygones en question peuvent être concaves et jointifs par un certain nombre de faces.
    Souleyre

  2. #2
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8
    Par défaut
    En sachant si un point se situe à l'intérieur d'un polygone, tu peux tester si tous les sommets de ton polygone sont bien intérieurs à ton polygone externe.
    Ceci n'est valable que si ton polygone externe est convexe.

    Si tes 2 polygones sont concaves, tu peux tester s'il n'y a pas d'intersection pour de l'ensemble des segments des 2 polygones.

  3. #3
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2007
    Messages : 172
    Par défaut
    Bien sûr, on ne sait rien a priori de la nature des polygones, concaves ou convexes, jointifs ou non. La solution brutale qui consisterait d'examiner point par point s'il existe au moins un point à l'intérieur d'un autre polygone est à exclure en raison de leur très grand nombre.
    Au cas présent, il s'agit de trouver un algorithme généraliste.

  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 : 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
    Il suffit de tester les intersections segment/segment des contours des polygones. Non ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2007
    Messages : 172
    Par défaut
    Non car les polygones ne sont jamais sécants.

  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
    Citation Envoyé par Souleyre Voir le message
    Non car les polygones ne sont jamais sécants.
    ?

    Je peux avoir un exemple de 2 polygones non sécants qui ne sont pas à l'intérieur l'un de l'autre ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Par défaut
    Bonjour,

    Citation Envoyé par Souleyre Voir le message
    La solution brutale qui consisterait d'examiner point par point s'il existe au moins un point à l'intérieur d'un autre polygone est à exclure en raison de leur très grand nombre.
    Qu'entends-tu pas "leur très grand nombre"? Pourrais-tu nous donner un ordre de grandeur?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par Souleyre Voir le message
    Bonjour à tous,
    On connaît bien l'algorithme permettant de savoir si un point se situe à l'intérieur d'un polygone.
    Existerait-il un algorithme déterminant si un polygone est à l'intérieur d'un autre polygone?
    Je précise que les polygones en question peuvent être concaves et jointifs par un certain nombre de faces.
    Souleyre
    si ce sont des simples réponses booléennes que vous désirez, il est assez facile d'obtenir la réponse en faisant faire le calcul par le GPU…

    à condition que les polygones soient tous décrits de manière cohérente quant à la "winding rule" - càd tous de la même façon, par exemple clockwise…

    il suffit de remarquer que si le polygone A est inclus dans le polygone B alors
    si l'on dessine les 2 polygones dans un espace plus grand que l'union de leurs bounding boxes, d'abord A et ensuite B en inversant sa "winding rule" (donc ici anticlockwise) alors un point situé à l'extérieur choisi comme "témoin" ne changera pas de couleur…

    par contre si B n'est pas entièrement dans A, toute la surface de dessin aura changé de couleur…

    Evidemment, il faudra examiner si la perte de précision due à la conversion de l'espace mathématique en surface de pixels est tolérable dans votre contexte…

    (voir aussi le chapitre "Polygon Tesselation" de "OpenGL Programming Guide", le "red book" …)

  9. #9
    Membre émérite
    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
    Par défaut
    Bonsoir,

    si ce sont des simples réponses booléennes que vous désirez, il est assez facile d'obtenir la réponse en faisant faire le calcul par le GPU…
    Le fait est que la précision est souvent attendue en absolue, et ce quelques soit la taille du polygone... Hélas, pour améliorer la précision d'un facteur 2, on multiplie par 4 la taille de l'image. Très vite, on perd l'intérêt du parallélisme.

    C'est donc souvent une fausse bonne idée de ramener un calcul sur des géométries à un calcul sur des images.

    Le principe de l'image est parfois utilisé comme premier filtre pour ce genre de calcul (grille). Mais là encore, on se heurte au choix du pas qui rend cette optimisation efficace si bien que l'on utilise plutôt des structures telles les QuadTree voir RTree.

    Ensuite, les temps de calcul restent raisonnables en traitant en séquentiel des géométries complexes, à l'aide de quelques optimisations sur les recherches d'intersections en particulier...

    Bye

  10. #10
    Expert confirmé

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par bretus Voir le message
    Le fait est que la précision est souvent attendue en absolue, et ce quelques soit la taille du polygone... Hélas, pour améliorer la précision d'un facteur 2, on multiplie par 4 la taille de l'image. Très vite, on perd l'intérêt du parallélisme.

    C'est donc souvent une fausse bonne idée de ramener un calcul sur des géométries à un calcul sur des images.
    Absolument...

    La géométrie est de la géométrie. Le traitement d'images est, par définition, lié à une définition (taille du pixel) et un découpage et un moyennage...

    Un point en géométrie n'a pas d'épaisseur...

    Une interpolation géométrique peut donner un pixel. Une interpolation de pixel donne un point (fictif) dans un espace qui ressemble nettement plus à de la géométrie pure, puisqu'avoir un pixel de coordonnées (2.345 , 3.623) est impossible...


    Les algorithmes de géométrie pure sont faits pour solutionner les problèmes de géométrie pure, ceux de traitements d'images pour solutionner les problèmes liés aux images..

    Ne mélangeons pas les genres, si l'on ne veut pas risquer soit de prendre un bulldozer pour écraser une mouche, soit d'avoir à faucher un hectare avec une paire de ciseaux à ongles...


    Comme je l'ai mentionné, les liens cités ci-dessus, ainsi que CGAL tout au moins, sont des algos de maths/géométrie pure(s), ce sont ceux-ci qu'il faut utiliser pour un problème, au moins tel que celui posté par le PO...




    Note : effectivement, comme tu le mentionnes, j'ai un mal fou à faire comprendre que par exemple afficher un modèle numérique (calculé en maillage) sous forme d'une image est une approximation, mais pas la réalité.. C'est d'ailleurs une des erreurs fondamentales de beaucoup (puisque tu as l'air pas mal dans le domaine) de SIGs... Représenter des valeurs discrètes (ou discontinues, ou n'ayant aucune signification) par une image, qui par définition est continue...

Discussions similaires

  1. Interpolation de couleurs/valeurs sur un polygone quelconque
    Par Earthwormjim dans le forum Algorithmes et structures de données
    Réponses: 33
    Dernier message: 24/11/2008, 13h13
  2. Réponses: 8
    Dernier message: 16/04/2007, 23h04
  3. point ou non dans un polygone quelconque
    Par Mandarine dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 11/06/2006, 03h03
  4. Comment texturer un polygone quelconque ?
    Par Invité dans le forum OpenGL
    Réponses: 4
    Dernier message: 19/05/2006, 13h29
  5. Savoir si un point est inclus dans un polygone quelconque
    Par SuperBIBI dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 02/08/2005, 19h02

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