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 :

Arbre binaire pour du dessin


Sujet :

Algorithmes et structures de données

  1. #1
    Membre habitué Avatar de Kromagg
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2008
    Messages : 275
    Points : 198
    Points
    198
    Par défaut Arbre binaire pour du dessin
    Bonjour chers Développeur et Développeuse

    Alors dans le cadre d'un projet scolaire je dois développer un petit logiciel de dessin sur iPad avec Unity. Avec Unity mais il s'agit ici d'un problème d'algorithmie.

    Je dessine en fait dans une texture (1024*768) qui est mise à jour à chaque frame (si dessin d'une nouvelle forme il y a). La mise à jour de la texture est obligatoire sous Unity pour prendre en compte les modifications, cependant ceci est très lourd. J'ai donc pensé découper ma texture en plusieurs petites textures de même taille collées les unes aux autres et ainsi mettre à jour la petite texture (128x92) dans laquelle je clique. Cependant je peux très bien cliqué à la frontière de deux petites textures et donc dessiner dans les deux en même temps (suivant la taille de mon point à dessiner).

    J'ai donc pensé organiser toutes ces textures sous la forme d'un arbre et quand je clique sur l'une d'entre elle je regarde à son voisinage si une autre est susceptible d'être mise à jour.

    Quel algorithme-arbre binaire me conseillez-vous ? Y a-t-il un moyen plus efficace de faire ce travail ?

    Merci d'avance

    Kromagg
    C'est dans ses rêves que l'homme trouve la liberté cela fut, est et restera la vérité! (John Keating - Le cercle des poètes disparus)

  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 081
    Points
    16 081
    Par défaut
    Bonjour,

    Citation Envoyé par Kromagg Voir le message
    J'ai donc pensé organiser toutes ces textures sous la forme d'un arbre et quand je clique sur l'une d'entre elle je regarde à son voisinage si une autre est susceptible d'être mise à jour.
    Heu... pourquoi prendre un arbre et pas un simple tableau 2D ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre habitué Avatar de Kromagg
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2008
    Messages : 275
    Points : 198
    Points
    198
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Bonjour,

    Heu... pourquoi prendre un arbre et pas un simple tableau 2D ?
    J'aimerai éviter de parcourir tout un tableau, simplement les textures au voisinage de la texture sur laquelle j'ai cliqué.

    Kromagg
    C'est dans ses rêves que l'homme trouve la liberté cela fut, est et restera la vérité! (John Keating - Le cercle des poètes disparus)

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur 3D
    Inscrit en
    Avril 2008
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur 3D

    Informations forums :
    Inscription : Avril 2008
    Messages : 400
    Points : 968
    Points
    968
    Par défaut
    Pas besoin de parcourir le tableau, tu peux facilement retrouver l'index de l’élément correspondant a ton bout d'image grâce a ses coordonnées. Et si tu peux retrouver l'index d'une image, tu peux aussi trouver ses voisines de la même façon.

  5. #5
    Membre habitué Avatar de Kromagg
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2008
    Messages : 275
    Points : 198
    Points
    198
    Par défaut
    Sachant que le nombre de voisin diffère en fonction de la position de ma texture dans mon tableau, comment puis-je faire pour connaître exactement ce nombre ? Y a-t-il une solution générique ?

    Kromagg
    C'est dans ses rêves que l'homme trouve la liberté cela fut, est et restera la vérité! (John Keating - Le cercle des poètes disparus)

  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 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Kromagg Voir le message
    Sachant que le nombre de voisin diffère en fonction de la position de ma texture dans mon tableau, comment puis-je faire pour connaître exactement ce nombre ? Y a-t-il une solution générique ?
    Ahh ? Tes textures n'ont pas toutes la meme tailles et donc ca forme une sorte de patchwork ?

    Dans ce cas, regarde du coté de la structure QuadTree

    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Membre habitué Avatar de Kromagg
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2008
    Messages : 275
    Points : 198
    Points
    198
    Par défaut
    Non mes textures ont toutes la même taille et elles sont carré (128*128 ou autre)

    Kromagg
    C'est dans ses rêves que l'homme trouve la liberté cela fut, est et restera la vérité! (John Keating - Le cercle des poètes disparus)

  8. #8
    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 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Kromagg Voir le message
    Non mes textures ont toutes la même taille et elles sont carré (128*128 ou autre)
    Heu... dans ce cas le nombre de voisins d'une texture est constant : 8

    (nord, nord/ouest, ouest, ... )
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #9
    Membre habitué Avatar de Kromagg
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2008
    Messages : 275
    Points : 198
    Points
    198
    Par défaut
    Pas forcément si je suis dans un coin (bas gauche, bas droit ...) il n'y en a que 3

    Kromagg
    C'est dans ses rêves que l'homme trouve la liberté cela fut, est et restera la vérité! (John Keating - Le cercle des poètes disparus)

  10. #10
    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 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Kromagg Voir le message
    Pas forcément si je suis dans un coin (bas gauche, bas droit ...) il n'y en a que 3
    Oui, bien sur. Tu peux aussi considérer qu'il y a 8 voisins dont 5 "extérieurs" à l'écran.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #11
    Membre habitué Avatar de Kromagg
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2008
    Messages : 275
    Points : 198
    Points
    198
    Par défaut
    D'accord je vais essayer cette piste.

    Sinon je pensais à une autre solution. Au lancement de l'application je peux, pour chaque texture, calculer la distance qui la sépare des autres textures. Si cette distance est inférieure à une certaine valeur dans ce cas les deux textures sont voisines. Je peux ainsi créer une liste d'adjacences pour chaque texture ce qui m'évite de rechercher à chaque fois mes voisins.

    Kromagg
    C'est dans ses rêves que l'homme trouve la liberté cela fut, est et restera la vérité! (John Keating - Le cercle des poètes disparus)

  12. #12
    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 081
    Points
    16 081
    Par défaut
    Tu peux prendre un tableau avec un quadrillage plus fin que la taille de la texture, et marquer les cases en fonction de leur position dans la texture.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        |       |
       3|4 D D 3|4   
    ----+-------+---
     U 2|1 U U 2|1 U
     - R|L - - R|L -
     - R|L - - R|L -
     D 3|4 D D 3|4 D
    ----+-------+---
     U 2|1 U U 2|1
        |       |
    1 --> textures voisines Nord, Nord/Ouest, Ouest
    2 --> textures voisines Nord, Nord/Est, Est
    3 --> textures voisines Sud, Sud/Est, Est
    4 --> textures voisines Sud, Sud/Ouest, Ouest
    L --> texture voisine Ouest
    R --> texture voisine Est
    U --> texture voisine Nord
    D --> texture voisine Sud
    - --> texture voisine : aucune
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. Commande récursive pour dessiner un arbre binaire.
    Par IKota dans le forum Programmation (La)TeX avancée
    Réponses: 2
    Dernier message: 30/05/2010, 22h41
  2. Arbre binaire pour expression opératorielle
    Par ValyGator dans le forum C++
    Réponses: 5
    Dernier message: 12/02/2009, 15h00
  3. Composant graphique pour arbre binaire
    Par danisam dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/08/2008, 11h58
  4. Dessiner un arbre binaire en java?
    Par zenaare dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 08/01/2007, 16h01

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