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 :

Numerotation de Polygone N°2


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 Numerotation de Polygone N°2
    Bonjour
    J'ai encore un problème de numerotation de polygones. Mais cette fois ci ils sont adjacents et forment un bloc.
    On a en gle deux situations

    - une suite de polygones adjacents (vertical ou horizontal)
    - 2 rangées de polygones justaposées les uns sur les autres et adjacents (vertical ou horizontal)

    la numerotation va de la droite vers la gauche.
    Merci.

  2. #2
    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 numerotation de polygone N°2
    Re-bonjour,

    j'apporte un detail que j'ai oublié.
    etant donné que je ne peux pas faire de croquis pour que vous compreniez, je voudrais vous dire à quoi ressemble ces polygones que je veux numeroter.

    c'est ce qu'on retrouve dans les cahiers des écoliers.
    les quadrillages composées de cases, ou voyez un peu le plateau d'un damier ou d'echec.
    Sauf qu'il ne faut considerer que : ces possibilités suivantes


    - Cas A : une rangée de polygones adjacents (vertical ou horizontal)
    - Cas B : deux rangées de polygones justaposées les uns sur les autres et adjacents (vertical ou horizontal)


    Et d'ailleurs les plateaux de dame ou d'echec sont interressants comme exemples car les cases sont colorées d'une manière alternées.
    C'est de cette même façon que je dois numeroter mes polygones quand je suis en face du CAS B.

  3. #3
    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 numerotation de polygone n°2

    Salut les amis
    Y a t-il quelqu'un qui a une ebauche de solution ?
    Là je suis bloqué

  4. #4
    Membre éclairé
    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
    Points : 859
    Points
    859
    Par défaut
    Salut,

    Tes polygones sont representes comment :
    - un ensemble de polygones carres ?
    - ou un graphe avec les coins comme sommet et des aretes pour chaque cote de polygne ?

    Si c'est dans le premier cas, c'est assez simple :
    - tu calcules pour chaque polygne le centre de gravite,
    - en fonction des centres de gravite, tu cherches dans quel cas tu te trouves. Tu regardes par exemple la distribution des coordonnees X tu auras soit une valeur (ligne verticale), 2 valeurs (2 lignes verticales) ou alors plusieurs valeurs regulierement espacees (ligne(s) horizontale(s)). Pareil pour y, et tu connait le cas.
    - Ensuite, bah tu classes d'abord sur X, puis sur y, ou l'inverse selon les cas et selon tes besoin, et tu devrais avoir ce que tu veux, non ?

    A+

  5. #5
    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 numerotation de polygone n°2
    salut kangourou

    j'ai lu attentivement ta réponse. je ne suis pas sur de t'avoir bien compris cette fois-ci.
    voici la situation :

    - Cas A : une rangée de polygones adjacents (vertical ou horizontal)
    - Cas B : deux rangées de polygones justaposées les uns sur les autres et adjacents (vertical ou horizontal)


    en fait laissons tomber le cas A, il est simple. Attaquons nous au second cas. Tu vois un peu le plateau du damier ou un cahier. c'est similaire sauf que c'est deux lignes de polygones justaposées.

    En fait c'est un ensemble de lots qui se rerouvent dans un ilot, tous issus d'un lotissement urbain.

    On peut donc se retrouver avec 8 polygones en haut et 8 polygones en bas et tous partageant des côtés, ils sont adjacents.

    Quant à l'orientation de ce bloc de polygones, on peut en trouver qui soit horizontal, vertical ou oblique


    La situation étant présenté, maintenant la solution que tu me propose ne fonctionnera pas lorsque mon bloc est oblique.
    N'oublie pas que l'objectif est de numeroter les polygones qui sont à l'intérieur du bloc.

    J'ai revu le problème sous un autre angle :
    - j'applique ton algo lorsque je suis dans le cas A : c'est facile
    - je sais reconnaitre un bloc lorsque je suis dans le cas b
    - je transforme le cas B en 2 cas A et je relance ton algo



    Le problème qui se pose maintenant comment scinder un bloc B en deux bloc A en vue de les numeroter comme si j'avais affaire à un bloc A ?


    Excuse moi si mon message est long.... et merci encore

  6. #6
    Membre éclairé
    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
    Points : 859
    Points
    859
    Par défaut
    Salut,

    une possibilite, c'est de detecter l'orientation principale de tes groupes de polygones. Tu fais une regression lineaire sur les sommets de polygones ou sur leurs centres, pour trouver la droite qui passe au mieux par tous les points. L'angle de la droite te donnera l'orientation de tes blocs.

    Ensuite, tu applique une transfo lineaire (une rotation + une translation) pour ramner les blocs a l'horizontale, et avec une origine fixee.

    Ca devrait permettre de ramener le pbm a un cas plus ou moins 'standard'.

    A+

  7. #7
    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 numerotation de polygone n°2
    salut kangourou

    c'est génial comme idée, j'aurais du y penser
    je teste tout de suite
    merci

  8. #8
    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 numerotation de polygone n°2
    salut kangourou
    j'ai entierement implementé l'algo et ça marche

    merci et A+

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

Discussions similaires

  1. numerotation de polygones
    Par nkd dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 05/04/2004, 20h34
  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