Pour incorporer des contraintes physiques aux plantes, comme par exemple un mur, le sol ou bien encore les plantes elles-mêmes, il existe plusieurs méthodes. La première, la plus "simple", serait de tester à chaque pousse d'un "dl" (courte distance), si un objet n'y est pas déjà. Le principe serait alors de vérifier mathématiquement que le segment de droite de l'entre-noeud considéré ne s'intersecte pas avec l'ensemble des entre-noeuds de toutes les plantes. Il faudrait par conséquent parcourir tous les axes et vérifier cette condition. Ce processus est extrêmement long (parcours), d'autant plus que tester le croisement de deux segments s'avère être aussi assez coûteux en temps de calcul.
Nous avons alors pensé à une deuxième solution beaucoup plus efficace : La discrétisation de l'espace ! Discrétiser l'espace en une matrice 3D booléenne (1 si un morceau de plante appartient à la case du tableau, et 0 sinon). Il ne s'agira ensuite que de simplement tester un bit d'un tableau pour savoir si un objet n'est pas déjà présent dans la localité considérée.
Intérêts :
Cette méthode n'utilise pas l'intersection mathématique de 2 segments. Elle est de plus très rapide car un seul test suffit à savoir si une contrainte physique a lieu. Son désavantage est par contre la place en mémoire que prend la matrice 3D ! Plus on diminue l'écart entre deux cases, plus au augmente le détail, et plus le tableau s'agrandit !
Par exemple, si on prend un pas de 0.02 dans un espace [-2,2] en x, [-2,2] en y et [-2,2] en z, on a alors un tableau 200x200x200 (soit 8 000 000 cases !).
julien michot 2006-08-05