Projet fractales

Notre équipe a été choisie par un lycée partenaire pour développer une bibliothèque logicielle visant à faire découvrir des propriétés mathématiques à ses élèves de manière ludique. Plus précisément, cette bibliothèque doit pouvoir générer des images représentant différentes fractales.

Fractale représentant la suite de Julia.

Membres du projets

Les nombres complexes

Dans cette section, il nous est demandé d’implanter une classe permettant de réaliser des opérations classiques sur les nombres complexes. Cette classe doit implémenter l’interface IComplex qui nous est fournie. Une classe de test nous est par ailleurs proposée afin de vérifier que notre implantation est correcte.

Suites complexes et fractales

Il est possible de générer de jolies fractales en considérant des suites de nombres complexes. Typiquement, la couleur d’un pixel de l’image est alors déterminée à partir du nombre d’itérations nécessaires pour déterminer si la suite diverge ou non. Dans notre cas, nous considérerons que la suite diverge dès que l’on obtient un nombre complexe de module strictement plus grand que 2 (on arrêtera alors de parcourir les termes de la suite). Les sections suivantes décrivent les différentes suites complexes que nous devons implanter.

Nous avons ainsi implémenté 2 suites :

Suite de Julia
Suite de Julia
Suite Mandelbrot
Suite Mandelbrot

Et leurs généralisations :

Suite de Julia généralisée
Suite de Julia généralisée
Suite Mandelbrot généralisée
Suite Mandelbrot généralisée

Choix des couleurs

Pour pouvoir générer nos fractales, nous avons besoin de définir une palette de couleurs. Cette palette doit pouvoir déterminer, à partir du nombre d’itérations réalisées, la couleur à afficher sur le pixel, en fournissant une instance de java.awt.Color.

Plusieurs palettes de couleurs différentes peuvent être envisagées. Par exemple, nous pouvons choisir d’appliquer un niveau de gris, en calculant le ratio entre le nombre d’itérations effectivement réalisées et le nombre maximum d’itérations initialement prévues. Nous pouvons également choisir une palette de couleurs pour laquelle nous définissons manuellement les différentes couleurs possibles, et choisir parmi ces couleurs celle qui sera utilisée.

Suites chaotiques et diagrammes de bifurcation

En suivant le modèle des suites de nombres complexes étudiées dans la section précédente, on souhaite maintenant pouvoir calculer des suites de points du plan réel ℝ2.

Création + génération d’images en Java

Afin de créer une image en Java, nous avons la possibilité d’utiliser la classe java.awt.image.BufferedImage. Celle-ci nous permet notamment d’affecter une couleur à un pixel de l’image, donné par ses coordonnées (x, y), où le point de coordonnées (0, 0) correspond au pixel en haut à gauche de l’image.

Nous allons maintenant pouvoir générer nos images à l’aide des différentes interfaces et classes développées dans les sections précédentes. Pour cela, nous avons besoin de connaître :

Figures et transformations géométriques

Une autre manière de produire des fractales est de construire une première figure géométrique, puis de répéter cette construction, soit à l’identique, soit en lui appliquant une rotation ou une échelle donnée. Le tracé de figures géométriques sur des images matricielles étant assez fastidieux, nous proposons dans cette section d’utiliser plutôt des images au format SVG, un format textuel permettant de produire des images vectorielles.

Nous y avons généré le Tapis de Sierpiński :

Tapis de Sierpiński
Tapis de Sierpiński

Ou encore le triangle de Sierpiński :

Triangle de Sierpiński
Triangle de Sierpiński

Bilan critique

Ce projet nous a permis d’appliquer les différents patrons de conception appris lors de ce semestre (S3) en cours de qualité développement. En voici une liste :

Lors de ce projet, seules 2 parties étaient à réaliser parmi les parties suivantes :

Nous avons réalisé la première et la troisième. La première piste d’amélioration de ce projet serait donc de réaliser [en entier -> rendre fonctionnelle] les suites chaotiques.

Ensuite, pour la partie sur les figures géométriques, il aurait été bien de réaliser d’autres figures comme les arbres fractales.