11-02-2010, 02:52 PM
(Modification du message : 11-02-2010, 04:05 PM par Sephi-Chan.)
Ce que j'appelle les axes sont les deux lignes (l'une verticale, l'autre horizontale) qui passent par le centre de la sphère centrale.
Voilà un essai pour les coordonnées des sphères qui ne sont pas sur un axe :
Il faut encore mettre ça à l'épreuve pour tester un peu mais je pense me planter (ça semble fonctionner uniquement dans la partie supérieure gauche du cercle).
J'ai du mal à mettre au point la fonction qui retourne la sphère présente aux coordonnées indiqués. Voici le début de cette fonction :
Cette fonction doit donc être "intelligente". Si on lui demande la sphère de coordonnées (1; 4), elle doit retourner la sphère (1; 0). Elle doit gérer toutes les "exceptions".
S'il y a un matheux dans l'assemblée pour ces 2 problèmes...
iffle:
Sephi-Chan
Voilà un essai pour les coordonnées des sphères qui ne sont pas sur un axe :
def neighbours(ring_index, index)
sphere = sphere_at_coordinates(ring_index, index)
neighbours = if sphere.on_axe?
[
sphere_at_coordinates(ring_index - 1, index),
sphere_at_coordinates(ring_index, index - 1),
sphere_at_coordinates(ring_index, index + 1),
sphere_at_coordinates(ring_index + 1, index - 1),
sphere_at_coordinates(ring_index + 1, index),
sphere_at_coordinates(ring_index + 1, index + 1)
]
else
[
sphere_at_coordinates(ring_index - 1, index - ring_index - 1)
sphere_at_coordinates(ring_index - 1, index - ring_index)
sphere_at_coordinates(ring_index, index - 1)
sphere_at_coordinates(ring_index, index + 1)
sphere_at_coordinates(ring_index + 1, index + ring_index)
sphere_at_coordinates(ring_index + 1, index + ring_index + 1)
]
end
neighbours.delete_if { |sphere| sphere.nil? }
end
Il faut encore mettre ça à l'épreuve pour tester un peu mais je pense me planter (ça semble fonctionner uniquement dans la partie supérieure gauche du cercle).
J'ai du mal à mettre au point la fonction qui retourne la sphère présente aux coordonnées indiqués. Voici le début de cette fonction :
# Return the sphere at the given coordinates or nil.
# Handle "outs of bounds" positions.
def sphere_at_coordinates(ring_index, index)
real_index = index % @grid[ring_index].size
@grid[ring_index][real_index]
end
Cette fonction doit donc être "intelligente". Si on lui demande la sphère de coordonnées (1; 4), elle doit retourner la sphère (1; 0). Elle doit gérer toutes les "exceptions".
S'il y a un matheux dans l'assemblée pour ces 2 problèmes...

Sephi-Chan