12-02-2010, 12:32 AM
Pour les variables, j'ai repris celles que tu avais utilisées pour tes explications en début de post (N : niveau, C : coefficient).
La seule fonction vraiment utile est la fonction getNeighbours qui prend les valeurs N et C d'une sphère. La fonction renvoie un tableau contenant les sphères voisines.
Les fonctions _sort1 et _sort2 sont utilisées par usort (ce qui permet de renvoyer un tableau trié du plus petit cercle au plus grand, classé par coefficient). La fonction validIndex s'assure juste que l'on n'aie pas de valeurs de C négatives ou supérieur au nombre de sphères sur un cercle.
Sinon, pour l'explication de getNeighbours, à part pour l'origine, il y a des récurrences :
- toujours les voisins de gauche et droite sur le cercle.
- toujours une sphère du cercle inférieur dont l'index de coef est C - arrondi.inf(C / N). Par exemple pour N = 3 et C = 10, on peut calculer qu'une sphère de niveau N-1 (3 - 1 = 2) et de coef. C - arrondi.inf(C / N) (10 - arrondi.inf(10 / 3) = 7) est sa voisine (2,7 est voisine de 3, 10).
- inverse pour le cercle supérieur.
-etc.
Toutes les autres formules sont vérifiables avec un plan de ton graphe sous les yeux. En notant les formules, j'ai finalement constaté que seule une voisine n'était pas la même pour les sphères sur les axes X et Y (il n'y a qu'une voisine sur le cercle inférieur et trois sur le cercle supérieur).
Bref, je ne pense pas être trop clair mais j'allais me coucher et je ne me sens pas de me lancer dans des schémas à cette heure-ci J'espère que tu capteras.
La seule fonction vraiment utile est la fonction getNeighbours qui prend les valeurs N et C d'une sphère. La fonction renvoie un tableau contenant les sphères voisines.
Les fonctions _sort1 et _sort2 sont utilisées par usort (ce qui permet de renvoyer un tableau trié du plus petit cercle au plus grand, classé par coefficient). La fonction validIndex s'assure juste que l'on n'aie pas de valeurs de C négatives ou supérieur au nombre de sphères sur un cercle.
Sinon, pour l'explication de getNeighbours, à part pour l'origine, il y a des récurrences :
- toujours les voisins de gauche et droite sur le cercle.
- toujours une sphère du cercle inférieur dont l'index de coef est C - arrondi.inf(C / N). Par exemple pour N = 3 et C = 10, on peut calculer qu'une sphère de niveau N-1 (3 - 1 = 2) et de coef. C - arrondi.inf(C / N) (10 - arrondi.inf(10 / 3) = 7) est sa voisine (2,7 est voisine de 3, 10).
- inverse pour le cercle supérieur.
-etc.
Toutes les autres formules sont vérifiables avec un plan de ton graphe sous les yeux. En notant les formules, j'ai finalement constaté que seule une voisine n'était pas la même pour les sphères sur les axes X et Y (il n'y a qu'une voisine sur le cercle inférieur et trois sur le cercle supérieur).
Bref, je ne pense pas être trop clair mais j'allais me coucher et je ne me sens pas de me lancer dans des schémas à cette heure-ci J'espère que tu capteras.