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 :

Convertir une matrice en polygones


Sujet :

Algorithmes et structures de données

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Points : 218
    Points
    218
    Par défaut Convertir une matrice en polygones
    Bonjour
    Pour utiliser un moteur 2D, j'ai besoin de polygones, sous la forme d'une liste de points x et y.
    Hors, j'utilise à la base, une matrice booléenne, un tableau à 2 dimensions.
    Je recherche un moyen de convertir ma matrice en une liste de polygones pour pouvoir utiliser le moteur simplement.
    J'ai l'impression que c'est un casse-tête et je me demande s'il existe déjà un système similaire à utiliser.
    merci

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Bonjour,

    Citation Envoyé par dawadam Voir le message
    Pour utiliser un moteur 2D, j'ai besoin de polygones, sous la forme d'une liste de points x et y.
    Hors, j'utilise à la base, une matrice booléenne, un tableau à 2 dimensions.
    Que représente la matrice booléenne 2D ? la présence de pixels ?

  3. #3
    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
    Autre question :

    Citation Envoyé par dawadam Voir le message
    'ai besoin de polygones, sous la forme d'une liste de points x et y.
    Pour faire quoi ?

  4. #4
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Pour faire quoi ?
    Citation Envoyé par dawadam Voir le message
    Pour utiliser un moteur 2D, j'ai besoin de polygones, sous la forme d'une liste de points x et y.
    ...
    convertir ma matrice en une liste de polygones pour pouvoir utiliser le moteur

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Points : 218
    Points
    218
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Bonjour,
    Que représente la matrice booléenne 2D ? la présence de pixels ?
    La matrice booléenne est une matrice de collision.
    A chaque boolean vrai correspond un block de une unité pas une unité.
    C'est une carte en "tuiles".

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par dawadam Voir le message
    La matrice booléenne est une matrice de collision.
    A chaque boolean vrai correspond un block de une unité pas une unité.
    C'est une carte en "tuiles".
    Et donc, il faut trouver un seul grand polygone qui englobe toutes les cases qui sont "vrai" ?

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Points : 218
    Points
    218
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Et donc, il faut trouver un seul grand polygone qui englobe toutes les cases qui sont "vrai" ?
    Oui, seulement il peut y en avoir plusieurs.
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    0 0 0 0 0 0
    0 0 1 1 0 0
    0 0 1 1 0 0
    0 0 0 0 0 0
    0 1 1 1 1 0
    Doit donner une liste de 2 polygones:
    Une bar de 4 par 1 en position 1x 0y
    Un carré de 2 par 2 en position 2x 2y

  8. #8
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    La méthode dépend de ce qui est attendu. Doit-on par exemple faire des approximations :
    . . . . . . . . . . .
    . . 1 1 . . . . . . .
    . . 1 1 1 1 1 . . . .
    . . 1 1 1 1 1 1 1 1 .
    . 1 1 1 1 1 1 1 1 . .
    . . . . 1 1 1 1 1 . .
    . . . . . . . 1 1 . .
    . . . . . . . . . . .
    
    Doit-on considérer le polygone comme un (unique) rectangle ? Sinon, il suffit d'opérer en deux phases :

    1/ Recherche des contours : on supprime tous les 1 qui ont leurs 4 voisins (N,S,E,O) à 1
    . . . . . . . . . . .
    . . 1 1 . . . . . . .
    . . 1 . 1 1 1 . . . .
    . . 1 . . . . 1 1 1 .
    . 1 1 1 . . . . 1 . .
    . . . . 1 1 1 . 1 . .
    . . . . . . . 1 1 . .
    . . . . . . . . . . .
    
    2/ On boucle sur le contour :
    . . . . . . . . . . .
    . . a b . . . . . . .
    . . t . c d e . . . .
    . . s . . . . f g h .
    . r q p . . . . i . .
    . . . . o n m . j . .
    . . . . . . . l k . .
    . . . . . . . . . . .
    

    Exercice laissé au lecteur : gérer les cas des trous et des formes complexes

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Points : 218
    Points
    218
    Par défaut
    Citation Envoyé par prgasp77 Voir le message
    La méthode dépend de ce qui est attendu. Doit-on par exemple faire des approximations :
    . . . . . . . . . . .
    . . 1 1 . . . . . . .
    . . 1 1 1 1 1 . . . .
    . . 1 1 1 1 1 1 1 1 .
    . 1 1 1 1 1 1 1 1 . .
    . . . . 1 1 1 1 1 . .
    . . . . . . . 1 1 . .
    . . . . . . . . . . .
    
    Doit-on considérer le polygone comme un (unique) rectangle ? Sinon, il suffit d'opérer en deux phases :

    1/ Recherche des contours : on supprime tous les 1 qui ont leurs 4 voisins (N,S,E,O) à 1
    . . . . . . . . . . .
    . . 1 1 . . . . . . .
    . . 1 . 1 1 1 . . . .
    . . 1 . . . . 1 1 1 .
    . 1 1 1 . . . . 1 . .
    . . . . 1 1 1 . 1 . .
    . . . . . . . 1 1 . .
    . . . . . . . . . . .
    
    2/ On boucle sur le contour :
    . . . . . . . . . . .
    . . a b . . . . . . .
    . . t . c d e . . . .
    . . s . . . . f g h .
    . r q p . . . . i . .
    . . . . o n m . j . .
    . . . . . . . l k . .
    . . . . . . . . . . .
    

    Exercice laissé au lecteur : gérer les cas des trous et des formes complexes
    ça semble être ce que je recherche.
    Il me faut gérer les polygones complexes, par contre, ils ne seront jamais creux.

  10. #10
    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
    Citation Envoyé par ToTo13 Voir le message
    ...
    ce que je voulais dire était :

    sous forme de liste de points ( = pixels) ou sous forme de points (= ligne brisée de segments)...

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Points : 218
    Points
    218
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    ce que je voulais dire était :

    sous forme de liste de points ( = pixels) ou sous forme de points (= ligne brisée de segments)...
    C'est donc bien sous la forme de lignes brisées de segments qu'il me faut.

  12. #12
    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
    OK

    Le problème géométrique sous-jacent est très complexe (calcul de l'enveloppe concave d'un ensemble de points)

    Cependant, vu que à la base tu as une matrice, la solution donnée par pgrasp77 est la bonne..

    Il te suffit, une fois les "polygones" ainsi isolés, de suivre les contours et stocker les points d'nflexion..

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Points : 218
    Points
    218
    Par défaut
    J'aurais tellement voulu trouver une solutions clef en main dans une API ou autre, mais on dirait bien que je vais devoir m'y coller...
    Merci

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

Discussions similaires

  1. Convertir une matrice en une image
    Par jijikkk dans le forum OpenCV
    Réponses: 0
    Dernier message: 24/01/2010, 14h28
  2. Réponses: 1
    Dernier message: 30/10/2009, 09h48
  3. convertir une matrice
    Par wawrint dans le forum MATLAB
    Réponses: 6
    Dernier message: 23/05/2008, 17h40
  4. [Débutant] Convertir une matrice 3D en matrice 2D avec chaine de caracteres
    Par grohino dans le forum MATLAB
    Réponses: 6
    Dernier message: 14/05/2008, 16h03
  5. Convertir une ligne en polygone texturé
    Par JohnSmith dans le forum SDL
    Réponses: 5
    Dernier message: 21/03/2007, 18h46

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