Fractal par Maxime Petitjean, version 1.0, 28/02/2010

J'accepte la diffusion de ce programme ainsi que de son code source sur le forum developpez.com.

Je ne peux pas tre tenu responsable des pertes, dgats, ou toutes autres choses provoqus par ce logiciel.

!*** ATTENTION ***!
Ce logiciel peut demander beaucoup de mmoire vive, il peut mme arriver qu'il dpasse la limite des 2 Go sur les machines Windows 32bits. Dans ce cas windows stoppera le logiciel.


Fractal est un logiciel libre et gratuit permettant la gnration et l'affichage de fractales.
Il a t dvelopp lors du dfi Qt du forum Dveloppez.com : http://qt.developpez.com/defis/01-buddhabrot/

Amusez-vous bien !



Points importants de l'interface :
----------------------------------

 * Visonneur d'image :
	- Roulette de la souris pour zoomer et dzoomer.
	- Clic gauche enfonc pour dfinir une nouvelle zone (normalement une slection mais ici utilis pour dfinir une zone de fractale)
	- Clic droit enfonc pour se dplacer dans l'image
	
 * Paramtres :
	- Les boutons "Avant" et "Aprs" permettent de naviguer dans l'historique des zones calcules

 * Palette :
	- Clic gauche pour ajouter une nouvelle couleur ou dplacer une existante.
	- Clic droit pour changer une couleur
	- Clic roulette pour supprimer une couleur


Points important du code source :
---------------------------------

 * Spar dans 2 dossiers : core et gui.
	Comme leur nom l'indique le core sera le coeur du programme c'est  dire ici la gnration de fractales

 * Ayant pens le code ct vitesse, j'ai vit au maximum l'hritage avec des classes virtuelles dans les parties critiques, les classes sont templates. L'utilisateur ne pourra donc pas s'amuser  crer de nouvelles fractales, seule celles compiles sont disponibles.

 * Suffixes :
	- _MT		: Multi Thread
	- _GL		: OpenGL (carte graphique)
	- _Mother	: Classe mre abstraite qui ne sera jamais dclare (pas mme un pointeur), elle sert juste  limiter la rcriture de certaines fonctions, le plus souvent pour la spcialisation de fonctions de classes template.

 * Prfixe :
	- T : Type templat

 * Rutilisation :
	- PixmapViewer est rutilisable pour n'importe quel autre projet Qt.
	- PaletteEditor, en utilisant un QLinearGradient plutt qu'une Palette et avec des modifications mineures devrait fonctionner  merveille !


Remarques :
-----------

 * Dans ma hirarchie de mon projet, j'utilise les mme termes que le code de yan, sans pour autant que la signification soit identique, exemple pour moi une fractale contient un gnrateur de poitns, un gnrateur de squences et un accumulateur. En clair ce que yan appelle une fractale, j'ai appel ca une squence, rservant la fractale pour le rsultat complet.

 * J'ai prfr, contrairement au code de yan, stopper la gnration de squences avant de dpasser la zone dfinie (yan laisse toujours un point de plus  l'extrieur) d'o l'apparition du cercle autour du buddhabrot (car les points autour du cercle de rayon 2 sont en dehors de la zone de travail de mandelbrot).

 * Le logiciel est plus optimis vitesse que consommation mmoire, ainsi lors de la gnration de buddhabrot, la consommation mmoire est multiple du nombre de threads utiliss. Un petit calcul : si on gnre un buddhabrot de 4096*4096, chaque accumulateur de chaque thread va utiliser 4096*4096*4 octets = 64 Mo. Avec 256 threads vous utiliserez 64Mo*256 = 16 Go. Comme je n'ai pas gr les exceptions lors de l'allocation, le programme plantera simplement.

 * J'ai ajout le fichier projet de Visual Studio 2008. Il faut juste rajouter dans les option du projet, dbogage, rpertoire de travail, la valeur "bin" afin de pourvoir dbugger.


Plateformes, tests et informations :
------------------------------------

Version minimum de Qt : 4.6.0
Le logiciel a t dvelopp sous Windows Vista 32bits, compil avec Visual Studio 2008 (.vcproj fourni) avec Qt 4.6.2, et test sous Ubuntu 9.10 (32bits) (virtualis) avec QtCreator et Qt 4.6.0.
Plateforme: Q9550 (4 * 2.83 GHz), HD 4870 et 4Go de RAM.
Temps de codage : ~50 heures rpartie sur quelques heures de tests du programme fourni pour le dfi et 2 semaines de codage assez intensif.