L'ensemble des tests tend à montrer que nos algorithmes sont efficaces dans la génération 3D des L-systems. L'évolution de chaque axe par un thread est aussi fructueux puisque, comme le montre les figures, il n'y a pas d'incohérence grossière.
De plus, l'apport des coefficients de torsion et de courbure est assez important. Si l'on se réfère à la figure 3.4, lorsque l'on ajoute une discrétisation des branches ainsi que ces coefficients locaux, l'arbre ainsi généré ressemble pour beaucoup aux spécimens naturels. Il s'agira ensuite, de trouver des règles de production intéressantes pour au mieux "coller" à la réalité.
Il faut cependant noter une chose assez importante visible lors de l'évolution des plantes. En effet, malgré l'utilisation de priorités différentes pour chaque thread, toutes les branches poussent de manière identique ! Il n'y a aucune branche qui ne pousse plus rapidement que les autres (à vue d'oeil), même si l'on affecte une priorité de 99 à une seule branche et 1 aux autres ! Mais en regardant de plus près le mode d'ordonnancement utilisé et notre implémentation de l'algorithme du thread, nous nous sommes rendu compte que pour limiter la vitesse de pousse des branches, nous avions ajouté une temporisation. Or la temporisation entraîne un changement d'état du thread ! Il demeure par conséquent temporairement en attente d'un signal, et laisse donc "sa place" aux autres threads, notamment ceux dont la priorité est inférieure. Or, ces threads n'auraient en théorie reçu du temps CPU, qu'à la mort des threads de priorité supérieure.
Bien que l'utilisation de threads pour la partage de la charge de travail, soit couramment employée, pour son efficacité (notamment pour Apache [APACHE]), nous avons dans notre cas besoin d'un partage contrôlé, mais surtout d'une politique d'ordonnancement conçue "sur-mesure".
julien michot 2006-08-05