Machine de Mandelbrot en PHP 5 Orienté Objet

Un peu d'histoire

En 1986, j'entrais à l'Ecole Nationale d'Ingénieurs et j'eu le plaisir immense d'accéder pour la première fois à un ordinateur, un compatible IBM-PC.

Processeur x86 16 bits, 64 ko de mémoire vive, écran noir et vert de 14' en 640 x 480 points. Ni souris ni disque dur. Pour démarrer, il fallait booter sur une disquette 5"1/4 contenant le système d'exploitation, DOS 4 si j'ai bon souvenir. Puis remplacer cette disquette par celle du programme désiré. 

Les programmes étaient plus simples, les interfaces sans fioritures. Mais la frustration et l'acharnement devant les bugs, la sensation dévorante d'atteindre le but, le plaisir paroxitique du résultat atteint, immédiatement suivit du désir de, déjà, perfectionner de nouveau le programme, n'étaient pas moindre qu'aujourd'hui.

Lorsque je sortis de l'Ecole d'Ingénieur, le monde n'était déjà plus tout à fait pareil.
Les x86 monochromes avaient cédé la place à des processeurs x386 (32 bits) avec écrans VGA 256 couleurs et disque dur (20 Mo pour les premiers), Windows 3.1 for Workgroups et les premières polices TrueType... Une époque était révolue à tout jamais.

C'est en language Pascal que je décidais, pobablement au printemps ou à l'automne 1988 (le dump imprimé du programme, dont une copie numérisée figure en annexe (n° 1), n'est malheureusement pas daté, mais le programme n'envisage qu'un écran monochrome), de réaliser un programme permettant d'afficher à l'écran l'ensemble de Mandelbrot, ce patatoïde mathématique que beaucoup identifient aujourd'hui spontanément au terme "fractale".

Bien évidemment, nous n'avions pas Internet à notre disposition. Je dûs importer des Etats-Unis le premier livre mathématique sur ce sujet (voir en annexe n° 2 copie de la couverture) que je garde encore précieusement. Il fit sur moi telle impression que j'en traduisis plus tard, par pur plaisir intellectuel, inextenso, une quinzaines de pages (annexe 2bis).

Après avoir couché sur le papier les grandes lignes du programme et des calculs mathématiques sous-jacents (essentiellement de la trigonométrie des plus basiques), je m'attelais à la tâche.

Le résultat est étonnant puisqu'il tient en 76 lignes de codes, déclarations incluses !

Ces soixante-seize lignes de codes rendaient (imagette ci-contre) l'ensemble de Mandelbrot désiré, avec un nombre d'itérations restreint mais, déjà, un coloriage par bandes alternées (noires et vertes, rappelez-vous !) de la zone extérieur de l'ensemble (vignette ci-contre). L'effet à l'écran était passable. Les écrans de l'époque étaient extrêmement phosporescents, si bien qu'un halo débordait des pixels clairs. Par ailleurs, les pixels n'étaient pas parfaitement jointifs. Le résultat offrait donc une jubilation qui n'était pas d'ordre esthétique, mais mathématique. L'annexe n° 3 est une reconstitution grandeur nature de ce à quoi pouvait ressembler le résultat.

Par la suite, le programme évolua légèrement : il fut possible de préciser le nombre d'itérations, de choisir le sous-ensemble désiré (en saisissant manuellement les coordonnées réelles et imaginaires du point supérieur gauche et la largeur et la hauteur de la zone à claculer), etc. Malheureusement, j'ai perdu les traces papier du code-source de ces améliorations successives. Le programme, quant à lui, sommeille dans ma cave, sur une disquette 5"1/4 qui ne sentira probablement plus jamais la caresse - et le crissement caractéristique - d'un lecteur de disquette 5"1/4, puisque ceux-ci ont tout bonnement disparu. On trouve encore, près de vingt ans plus tard, quelques compilateurs Pascal portés sur environnement 32 bits. Mais l'affichage sur un écran LCD XVGA 16 millions de couleurs n'a vraiment aucun charme comparés aux monochromes verts...

Pourquoi une nouvelle version en 2004 ?

Par nostalgie ... mais pas seulement.
En juillet 2004, la version 5 de PHP a été rendue publique. Cette version offre des améliorations considérables, notamment pour les processus XML et XSLT qui sont ma spécialité professionnelle depuis 1999. Mais elle offre aussi, enfin, une implémentation de programmation Orientée Objet cohérente.

J'ai donc décidé à titre d'exercice personnelle de créer un moteur de calcul et d'affichage de l'ensemble de Mandelbrot qui soit écrit entièrement en syntaxe Orientée Objet . Accessoirement, l'exercice permet de torde le cou à la réputation qui veut que PHP soit un language inadapté aux mathématiques et au graphisme.

La nouvelle version ne simule pas exactement le programme de 1988.
Elle produit l'ensemble de mandelbrot, en 256 niveaux de gris, sur une grille de dix carreaux sur dix. Cliquer sur l'un des carreaux permet d'agrandir la portion sous-jacente. 

S'agissant d'un outil d'exercice et de démonstration technologique, les fonctionnalités sont volontairement limitées.

Enfin, les claculs de fractales font appel à des itérations successives gourmandes en temps processeur. 

Pour limiter la charge sur le serveur qui héberge ce site, la version web :
- est limitée à 200 x 200 pixels ;
- est limitée à 32 itérations ;
- et est temporisée entre chaque calcul d'une nouvelle image. Un seul internaute peut, à chaque instant , demander le calcul d'une image. 

Ce programme est open-source et gratuit.

Vous pouvez le télécharger, l'essayer, l'utiliser, le modifier, le redistribuer, sous réserve que :
- aucune exploitation commerciale n'en soit faite (vous en pouvez pas e revendre, ni l'incorporer sur un support (web, CD-ROm, etc.) vendu ou d'accès réservé à des abonnés) ;
- vous ne devez pas supprimer la mention : "D'après/From François PASCAL, www.floconsdepaques.com" .

La version téléchargeable est la version complète, non-bridée.
Nous vous déconseillons très vivement de l'utiliser sur un serveur mutualisé ; ce programme pouvant être extrêmement gourmand en temps-processeur et en espace mémoire, vous risqueriez de vous exposer aux foudres de votre hébergeur...

Accéder au programme

Annexe 1 : Script du proramme de 1988 (png 124 ko)

Annexe 2 : Couverture de l'ouvrage "The beauty of fractals" (jpeg 43 ko)

Annexe 2bis : Traduction personnelle des pages "The beauty of fractals" (pdf 227 ko)

Annexe 3 : simulation du résultat obtenu à l'écran en 1988

Annexe 4 : code source

Easter Flakes • Flocons de Pâques | Nous contacter
© Easter Flakes - 2007. Tous droits réservés sur toutes images, textes et codes. Valid XHTML 1.0 Transitional

Server monitoring / website monitoring with Livewatch.de
Server Monitoring with Livewatch.de