QuadTree ... help !!!!! - C - Programmation
Marsh Posté le 06-12-2005 à 18:09:54
dans le quadtree, y'a pas une historie de parcourt en Z récursive?
Marsh Posté le 06-12-2005 à 19:04:22
Citation : Quelqu'un peut-il faire le travail a ma place et me donner le code tout fait, gratuitement ? |
Non.
Citation : Quelqu'un saurait-il ou je peux trouver l'explication de l'algo ? |
Lequel? celui de parcours? C'est un bete parcours recursif d'arbre a la base.
A+,
Marsh Posté le 06-12-2005 à 19:20:52
gilou a écrit :
Non. |
Ca, je pense que c'était de l'humour...
Marsh Posté le 06-12-2005 à 20:00:42
il te faut deux précidats :
le bool hasChildren(leaf*)
appellons le bool isLeafOver(leaf*,int,int)
si le prédicat 2 est bien implémenté tu n'as pas besoin du 1
ensuite le parcours est tout simple, par exemple :
leaf *find(leaf*src,int x,int y)
{
if(hasChildren(src))
{
if(isLeafOver(src->L1,x,y))
{
retun find(src->L1,x,y);
} // x4...
}
else
{
return isLeafOver(src,x,y)?src:NULL;
}
}
tu peux aussi gagner à représenter tes feuilles dans un tableau, un joli desing devrait te permettre de passer en 3D en un clin d'oeil
Marsh Posté le 07-12-2005 à 11:06:34
fra0 a écrit : il te faut deux précidats :
le bool hasChildren(leaf*)
appellons le bool isLeafOver(leaf*,int,int) |
ok merci pour ton aide .... en fait le problème que j'ai c'est pour créer la fonction d'insertion d'une nouvelle feuille ... je vois pas comment faire etant donné que j'ai quatre fils a chaque fois !!! a mon avis je dois faire des opérations pour savoir dans quelle zone je me trouve mais ca m'a l'air super complique !!!! saurais-tu m'aider ?
merci bcp par avance
Marsh Posté le 07-12-2005 à 18:55:14
tu veux faire quoi avec ton quadtree exactement ?
si tu sais pas trop, reprends un de tes arbres binaires
transforme tes clés comme ça:
x:76543210 y:76543210
k:7766554433221100
et laisse la magie opérer
Marsh Posté le 09-12-2005 à 13:04:13
salut
Merci, en fait j'ai trouvé comment faire .... mais maintenant j'ai un ENOoOoOOooooOOooOooooooOOOOOoooOOOOOOoOOorme problème relatif à la programmation c'est in-dé-bu-ga-bl-euh, je comprend pas, je comprend pas, je comprend pas ....je comprend pas. Je met ce que j'ai si une bonne âme veut bien aider c'est vraiment génial
mes structures :
Code :
|
bon j'usqu'ici ca va ....alors ensuite j'ai crée une fonction qui me pond un alloc pour chaque feuille du quadtree (et son homologue free, etc, je les mets pas ici)
Code :
|
bon alors jusqu'ici tout va bien, jusqu'ici tout va bien ...alors ensuite j'ai crée une fonction que me subdivise une feuille en quatre, cad qui alloue quatre fils avec les nouvelles coordonnées et centre :
Code :
|
bon alors la ca va encore !!!!!!! Mais le big problème, c'est que dans le main,
je fais :
Code :
|
donc jusque la ca marche, je récupère bien ma feuille qui est subdivisée avec les nouvelles coordonées pour chacun des fils, mais ensuite j'appelle une fonction
Code :
|
Et là .... je récupère bien mon quadtre avec ces noeuds, sauf que les coordonées sont completements pas bonnes du tous, il me sort ds valeurs du genre {-1073747544,1074402066} ...pourquoi ca marche pas alors que juste avant j'ai bien récupéré ma feuille subdivisée ????
est ce que ca vient de mes structures ? je dois mettre des tableaux ou des int * ???? je comprends plus rien .... si qqu'un peut m'aider please please please
merci par avance
Marsh Posté le 09-12-2005 à 15:12:44
Peut être pasque l'erreur est dans dessine_moi_un_quadtree? T'as le code?
Marsh Posté le 09-12-2005 à 15:16:22
kaloskagatos a écrit : Peut être pasque l'erreur est dans dessine_moi_un_quadtree? T'as le code? |
salut, ben je crois pas parce que j'ai tout commenté, je fais juste un printf des valeurs des coins, sachant que j'ai fait une subdivision dans le main :
Code :
|
c'est paranormal
Marsh Posté le 09-12-2005 à 15:36:24
Dans ton leaf_subdivise il faut que tu alloues des tableaux dans le tas au lieu de la pile
Parce que dans ton leaf_alloc tu copies les adresses de ces tableaux et pas leurs valeurs. Hors ces tableaux sont détruits à la sortie de
leaf_subdivise
Donc fais des malloc pour tes tableaux L00_cornerXX je pense que ça passera
edit: ortho
Marsh Posté le 09-12-2005 à 17:09:05
kaloskagatos a écrit : Dans ton leaf_subdivise il faut que tu alloues des tableaux dans le tas au lieu de la pile |
Ca marche, youpi !!!! Merci
Marsh Posté le 09-12-2005 à 17:11:34
Marsh Posté le 06-12-2005 à 18:03:56
salut,
j'ai besoin de faire une implémentation quadtree mais je sais pas comment m'y prendre. Quelqu'un peut-il faire le travail a ma place et me donner le code tout fait, gratuitement ? Quelques explications seraient un plus ...ainsi qu'un code bien commenté et indenté. Merci ... Pour ceux qui souhaiteraient me donner un peu d'argent en guise de gratitude je ferait tout mon possible pour qu'il puissent le faire
plus serieusement, je comprend pas la méthode. J'ai déja programmé des arbres binaires, tas, graphes, mais pour les quadtree je suis un peu bloqué pour le parcours,etc. Chaque feuille de mon quadtree a sois
- pas de fils
- 4 fils
Quelqu'un saurait-il ou je peux trouver l'explication de l'algo ? j'ai déja fait mes structures, je les mets :
Merci par avance
ps : heu ... si vous etes ok pour la premiere option ca marche toujours
Message édité par in_your_phion le 06-12-2005 à 18:10:02