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 :

Envellope d'un polygone avec anneau


Sujet :

Algorithmes et structures de données

  1. #1
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut Envellope d'un polygone avec anneau
    Bonjour,

    Un petit exemple valant mieux qu'un long discours :
    Une compagnie pétrolière a des droits de forage sur un polygone en Mer du Nord. Elle exploite une plate-forme de forage mobile avec aire d'atterissage Hélico.

    Sachant que les hélico communiquent par radio dans un rayon de 30km autour de la plateforme, comment déterminer la série d'arcs et de segments de droites qui constitue l'envellope de la zone dans laquelle communiquent les hélico ?

    • Cas 1 : Si il n'y a aucun angle rentrant dans le polygone, pas de problème.
    • Cas 2 : Si il existe des angles rentrants, on peut être amené à éliminer partiellement un ou des éléments du contour. Cà se complique.
    • Cas 3 : la zone de forage est définie par plusieurs polygones contigus ...

    Pourriez-vous me proposer des pistes ou des solutions pour les cas 2 et 3 ?


    Il est assez simple de définir la surface contenue dans l'envelloppe comme la réunion du polygone initial + des cercles centrés sur les sommets + rectangles autours des cotés. Mais comment déterminer à partir de cette réunion de surfaces le contour externe avec arcs et droites dans le bon ordre ?

    PS: on travaille dans le plan (c.à.d, qu'on ignore les déformations lièes à la projection)

  2. #2
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 814
    Points : 7 642
    Points
    7 642
    Par défaut
    Salut,

    Tu peux jeter un oeil à ma réponse pour ce post: http://www.developpez.net/forums/sho...d.php?t=168660

    Le sujet n'est pas du tout le même, mais j'appliquerais la même technique! (en adaptant un peu à ton sujet...)

  3. #3
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Le sujet n'est pas du tout le même, mais j'appliquerais la même technique! (en adaptant un peu à ton sujet...)
    Cette technique ressemble beaucoup à ce que je fais aujourd'hui, mais j'ai des problèmes lorsque qu'il faut éliminer une série de points dont la "dilation" est entièrement ou partiellement contenue dans la "dilation" de points non contigus.
    Par exemple : Si on trace la zone des eaux territoriales à 12 milles nautiques d'Arcachon, on devra ignorer le tracé du contour intérieur du bassin.

  4. #4
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 814
    Points : 7 642
    Points
    7 642
    Par défaut
    Citation Envoyé par Graffito
    Par exemple : Si on trace la zone des eaux territoriales à 12 milles nautiques d'Arcachon, on devra ignorer le tracé du contour intérieur du bassin.
    Je vois deux solutions là...
    Soit supprimer au final les boucles "intérieures" du contour dilaté...
    Soit gérer progressivement les intersections éventuelles du contour dilaté avec le contour du polygône... (en faisant attention que si tu tombes sur un bassin d'Arcachon trop grand, tu vas oublier une zone libre au milieu...)

    Je préfèrerais la première à la rigueur...

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    C'est résolu.

    La solution consiste à découper l'envellope en petit segments et à éliminer les extremités se trouvant à l'intérieur de l'anneau (distance à la surface du polygone < rayon de l'anneau).

  6. #6
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Et tu as une solution à
    Cas 2 : Si il existe des angles rentrants, on peut être amené à éliminer partiellement un ou des éléments du contour. Cà se complique.
    Parce que mon problème me semble similaire.http://www.developpez.net/forums/sho...98#post2808798

  7. #7
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    je détaillerais plus plus tard (là pas le temps), mais j'ai une solution simple que j'ai mise en oeuvre :

    pour chaque sommet : 6 points (si l'enveloppe est autant intérieure qu'extérieure) ou 3 si elle est d'un seul côté.

    Définir une distance de déplacement (pour avoir l'enveloppe : par exemple n mètres).

    Calculer la perpendiculaire à chaque segment de chaque côté du sommet, plus la médiane.

    le point 2 est déplacé de la distance le long de la médiane.
    le point 1 est déplacé le long de la première perpendiculaire, le point 3 de la seconde.

    Si les segments S-point 1 et S-point 3 se croisent, angle intérieur TROP aigu, on les supprime. Sinon on les garde.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    \                     /
      \                 /
        \             /
          \         /
            \     /
              \  /     3
       1       S    
     
                2
    là je montre extérieur, mais c'est la même chose pour angle intérieur : il suffit d'imaginer ici que l'intérieur du polygone est en bas

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

Discussions similaires

  1. Problème de décalage de polygone avec Mapserv
    Par titam11 dans le forum IGN API Géoportail
    Réponses: 18
    Dernier message: 04/10/2012, 15h15
  2. [Google Maps] google map v3 : undo sur un polygone avec click droit
    Par jamestout dans le forum APIs Google
    Réponses: 0
    Dernier message: 02/11/2010, 14h04
  3. [OpenLayers] Ne dessiner qu'un seul polygone avec le control
    Par MasterOfChakhaL dans le forum SIG : Système d'information Géographique
    Réponses: 2
    Dernier message: 27/07/2010, 17h08
  4. [GD] Dessiner un polygone avec GD
    Par dan humpfrey dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 03/05/2010, 09h54
  5. Réponses: 2
    Dernier message: 06/08/2007, 16h28

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