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

C Discussion :

decouper un polygon en rectangles


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 74
    Points : 54
    Points
    54
    Par défaut decouper un polygon en rectangles
    Salut,
    Je veux faire une fonction qui decoupe un polygon en rectangles et j'ai aucune idee .
    on a juste le coordones (x,y) des coins du polygon dans un vecteur . qui sont trie par rapport a x .

    structure qui contiens deux int x et y chaque couple (x et y ) represente un coin du poligon . le tous est trie du plus proche a 0 au loin dans un vecteur (on travail juste sur le cadran positif x>=0 et y>=0 ).
    Il ce rectangle sera identifie par un vecteur de coins (x,y)
    Merci

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Je veux faire une fonction qui decoupe un polygon en rectangles et j'ai aucune idee
    C'est possible de faire ça avec un nombre fini de rectangles ? Si on prend comme polygone un triangle, comment fait-on ?
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 74
    Points : 54
    Points
    54
    Par défaut
    j'ai oublie de preciser ca
    Je crois que l'image explique tous


  4. #4
    Membre régulier Avatar de mikhailo
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 78
    Points : 75
    Points
    75
    Par défaut
    Il s'agit donc bien de coordonnées entières, et de polygones qui sont forcément concaténation d'un nombre fini de rectangles? Et y a-t-il des règles spécifiques pour le découpage, comme "par coupes verticales uniquement", ou quelque chose dans le genre?
    "Les hommes et les femmes qui, sans bouger de leur bureau ou de leur bibliotheque, sans développer leur puissance corporelle et leurs infinies dimensions, parviennent, par une opération de la conscience, à une tristesse pessimiste qui se pretend lucide ne font que constater, sans le savoir, que toute identification du multiple de la vie à la vacuite de la conscience mène inévitablement à ce pessimisme et cette impuissance."

    extrait de "La fragilité" de Benasayag

  5. #5
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 74
    Points : 54
    Points
    54
    Par défaut
    Oui, que des coupes verticales

  6. #6
    Membre régulier Avatar de mikhailo
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 78
    Points : 75
    Points
    75
    Par défaut
    Alors voilà un algo, supposant que tu partes du coin le plus à gauche et le plus haut (donc min des x, puis si plusieurs x min, max de y).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    y = y1; //y1 = coordonnée y du premier coin
    x = x1; //x1 = coordonnée x du premier coin
    do
    {
     x = x + 1;
    }while (x != de l'abscisse d'un des autres coins)
     
    do
    {
     y = y - 1;
    }while (y != de l'ordonnée d'un des autres coins && il existe des y plus petits avec l'abscisse x1)
    A ce stade, (x, y1) et (x1, y) sont les coordonnées de deux coins opposés du premier rectangle, qui le définissent donc complètement.
    Il suffit donc d'enregistrer ou afficher le résultat, puis passer au rectangle suivant, en cherchant les coordonnées du coin de la figure restante le plus à gauche puis le plus en haut (x min, et y max pour cette valeur de x).

    A priori, ça marche pour faire ton découpage vertical à condition que ta figure initiale ne soit pas concave (donc pas en forme de U, par exemple). Si ça peut être le cas, il faut ajouter un ou deux tests supplémentaires.
    "Les hommes et les femmes qui, sans bouger de leur bureau ou de leur bibliotheque, sans développer leur puissance corporelle et leurs infinies dimensions, parviennent, par une opération de la conscience, à une tristesse pessimiste qui se pretend lucide ne font que constater, sans le savoir, que toute identification du multiple de la vie à la vacuite de la conscience mène inévitablement à ce pessimisme et cette impuissance."

    extrait de "La fragilité" de Benasayag

  7. #7
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 74
    Points : 54
    Points
    54
    Par défaut
    Y a il pas de solution pour commnencer juste d'agauche sans la condition de haut ?

  8. #8
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 74
    Points : 54
    Points
    54
    Par défaut
    Je crois que dans le polygone B du dessin il y a un petit probleme pour passer au deuxieme rectangle

  9. #9
    Membre régulier Avatar de mikhailo
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 78
    Points : 75
    Points
    75
    Par défaut
    A priori, pas de problème... Enfin, je ne vois pas lequel, du moins.

    Pour ce qui est de commencer ailleurs que le plus à gauche et le plus en haut, il n'y a pas de problèmes, il faut juste que tu décides une fois pour toutes d'où tu pars. Et ensuite, si tu pars par exemple dans le coin en bas à gauche, il faudra juste changer la décrémentation de y par une incrémentation (y = y + 1 au lieu de y = y - 1).

    Pour passer au rectangle suivant, tu prends la dernière valeur de x retournée (qui marque donc l'endroit où l'on va couper le premier rectangle), et tu cherches les valeurs de y correspondantes à celle-ci. Tu prends la plus petite si tu veux commencer en bas, la plus grande si tu veux commencer en haut, et c'est reparti =)
    "Les hommes et les femmes qui, sans bouger de leur bureau ou de leur bibliotheque, sans développer leur puissance corporelle et leurs infinies dimensions, parviennent, par une opération de la conscience, à une tristesse pessimiste qui se pretend lucide ne font que constater, sans le savoir, que toute identification du multiple de la vie à la vacuite de la conscience mène inévitablement à ce pessimisme et cette impuissance."

    extrait de "La fragilité" de Benasayag

  10. #10
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 74
    Points : 54
    Points
    54
    Par défaut
    merci beaucoup je vais essayer ce que tu m'a dit .
    Si vous avez d'autres solutions n'hesitez pas a me dire

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/05/2011, 19h23
  2. Réponses: 1
    Dernier message: 15/11/2009, 23h21
  3. Algorithme de decoupe de zone en rectangles
    Par typedef dans le forum Mathématiques
    Réponses: 2
    Dernier message: 28/08/2009, 14h17
  4. 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
  5. langage] Découper une chaine suivant un délimiteur
    Par totox17 dans le forum Langage
    Réponses: 2
    Dernier message: 25/11/2002, 16h25

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