Une application interactive multi-plateforme pour explorer et générer des fractales (Mandelbrot, Julia, Burning Ship, Tricorn, Newton) en haute résolution, développée avec Avalonia UI et .NET 9.
Téléchargez la dernière version pour votre système d'exploitation :
| Plateforme | Architecture | Téléchargement |
|---|---|---|
| 🪟 Windows | x64 | Fractals-windows-x64.exe |
| 🐧 Linux | x64 | Fractals-linux-x64 |
| 🍎 macOS | Intel (x64) | Fractals-osx-x64.zip |
| 🍎 macOS | Apple Silicon (ARM64) | Fractals-osx-arm64.zip |
Installation :
- Téléchargez l'archive correspondant à votre système
- Extrayez le contenu
- Lancez l'exécutable
Fractals(Linux/macOS) ouFractals.exe(Windows)
Note pour macOS : Au premier lancement, faites un clic droit → "Ouvrir" pour contourner la vérification Gatekeeper.
Note pour Linux : Rendez l'exécutable avec chmod +x Fractals si nécessaire.
- Téléchargement
- Fonctionnalités
- Fractales disponibles
- Utilisation
- Raccourcis clavier
- Qualités prédéfinies
- Architecture technique
- Compilation
- Contribution
- Licence
- Mandelbrot : La fractale classique et iconique
- Julia Set : Ensemble de Julia avec paramètres personnalisables
- Burning Ship : Variante du Mandelbrot avec valeurs absolues
- Tricorn : Mandelbrot avec conjugaison complexe
- Newton Fractal : Basé sur la méthode de Newton-Raphson
- Zoom infini : Explorez les fractales avec un zoom quasi-illimité
- Navigation en temps réel : Suivez les coordonnées complexes sous votre curseur
- Zoom centré sur le curseur : Zoomez directement sur la position de votre souris (touches + et -)
- Génération progressive : Visualisez la fractale en cours de génération ligne par ligne
- Pause/Reprise : Mettez en pause la génération (touche C)
- Annulation rapide : Annulez une génération en cours (touche X)
- 5 niveaux de qualité prédéfinis (de 720p à 8K - 7680x4320)
- 5 niveaux d'itérations (de 100 à 2000 itérations)
- Coloration lissée (smooth coloring) pour des dégradés fluides
- Algorithme optimisé utilisant du code unsafe pour des performances maximales
- Adaptation automatique à la résolution de votre écran
- Historique Z/Y : Navigation Undo/Redo dans vos explorations (jusqu'à 50 états)
- Export PNG haute résolution avec dialogue de sauvegarde
- Nommage automatique incluant la date, l'heure et la résolution
- Sauvegarde automatique des images dans l'historique
- Panneau flottant avec design glass morphism moderne
- Affichage en temps réel :
- Niveau de zoom avec précision
- Coordonnées du centre et du curseur
- Statistiques de génération (vitesse, temps restant)
- Type de fractale actif
- Qualité et itérations sélectionnées
- Interface masquable (touche H) pour des captures d'écran sans éléments d'UI
- Mode plein écran (F11) pour une immersion totale
- Fichiers journaux automatiques dans
~/.local/share/Fractals/(Linux/macOS) ou%LOCALAPPDATA%\Fractals\(Windows) - Horodatage précis au milliseconde près
- Traçabilité complète des actions utilisateur et des générations
| Touche | Fractale | Description |
|---|---|---|
| F1 | Mandelbrot | La fractale classique, centrée sur (-0.5, 0) |
| F2 | Julia Set | Ensemble de Julia avec paramètres c = -0.7 + 0.27015i |
| F3 | Burning Ship | Variante avec abs() appliqué aux coordonnées |
| F4 | Tricorn | Mandelbrot avec conjugaison complexe |
| F5 | Newton Fractal | Basé sur z³ - 1 = 0 avec méthode de Newton |
- Lancez l'application : L'application démarre automatiquement avec une génération Mandelbrot
- Attendez la génération : La fractale se génère progressivement (vous pouvez voir la progression)
- Explorez : Utilisez les touches + et - pour zoomer/dézoomer sur la position du curseur
- Changez de fractale : Appuyez sur F1-F5 pour changer de type de fractale
- Ajustez la qualité : Appuyez sur Q+1 à Q+5 pour changer la résolution
- Ajustez les itérations : Appuyez sur I+1 à I+5 pour changer le niveau de détail
- Zoom précis : Placez votre curseur sur une zone intéressante et appuyez sur +
- Historique : Utilisez Z (undo) et Y (redo) pour naviguer dans votre historique
- Pause : Appuyez sur C pour mettre en pause une génération longue
- Annulation : Appuyez sur X pour annuler et revenir à l'état précédent
- Export : Appuyez sur S pour sauvegarder l'image actuelle en PNG
| Touche | Action |
|---|---|
| F1-F5 | Changer le type de fractale (Mandelbrot, Julia, Burning Ship, Tricorn, Newton) |
| + / - | Zoom in / Zoom out (centré sur le curseur) |
| R | Réinitialiser la vue (retour à la position initiale) |
| Touche | Action |
|---|---|
| Q + 1-5 | Changer la qualité (résolution) |
| I + 1-5 | Changer le nombre d'itérations |
| N | Régénérer manuellement la fractale |
| Touche | Action |
|---|---|
| C | Pause / Reprendre la génération |
| X | Annuler la génération et revenir à l'état précédent |
| Touche | Action |
|---|---|
| Z | Undo (revenir en arrière dans l'historique) |
| Y | Redo (avancer dans l'historique) |
| S | Sauvegarder l'image actuelle (PNG) |
| Touche | Action |
|---|---|
| H | Masquer/Afficher le panneau d'informations |
| F11 | Basculer en mode plein écran |
| Index | Nom | Résolution | Raccourci |
|---|---|---|---|
| 1 | Rapide | 1280 x 720 | Q+1 |
| 2 | Normal | Résolution écran | Q+2 |
| 3 | Haute | 2560 x 1440 | Q+3 |
| 4 | Ultra | 3840 x 2160 (4K) | Q+4 |
| 5 | Extrême | 7680 x 4320 (8K) | Q+5 |
| Index | Nom | Itérations | Raccourci | Temps estimé (1080p) |
|---|---|---|---|---|
| 1 | Très rapide | 100 | I+1 | ~0.5s |
| 2 | Rapide | 300 | I+2 | ~1.5s |
| 3 | Normal | 500 | I+3 | ~2.5s |
| 4 | Détaillé | 1000 | I+4 | ~5s |
| 5 | Très détaillé | 2000 | I+5 | ~10s |
Les temps sont indicatifs et varient selon votre processeur.
- .NET 9.0 : Framework moderne et performant
- Avalonia UI 11.3.7 : Interface utilisateur multi-plateforme
- C# 12 : Langage avec code unsafe pour optimisation
- SkiaSharp : Moteur de rendu graphique
Fractals/
├── FractalView.axaml(.cs) # Interface utilisateur principale
├── FractalCalculator.cs # Algorithmes de calcul des fractales
├── FractalColorizer.cs # Système de coloration
├── FractalHistory.cs # Gestion de l'historique (Undo/Redo)
├── FractalLogger.cs # Système de logging
├── FractalModels.cs # Modèles de données
├── FractalPanelManager.cs # Gestion de l'affichage du panneau
├── FractalPresetManager.cs # Gestion des préréglages
└── AppConfig.cs # Configuration TOML (future)
- Code unsafe : Accès direct à la mémoire pour manipulation rapide des pixels
- Génération asynchrone : L'UI reste responsive pendant les calculs
- Rafraîchissement progressif : Affichage tous les 5 lignes pour feedback visuel
- Calcul optimisé : Algorithme d'échappement optimisé pour chaque type de fractale
- Smooth coloring : Interpolation logarithmique pour des couleurs fluides
- .NET 9.0 SDK : Télécharger
# Cloner le dépôt
git clone https://github.com/votre-username/Fractals.git
cd Fractals
# Restaurer les dépendances
dotnet restore
# Compiler
dotnet build
# Lancer
dotnet runWindows (x64) :
dotnet publish -c Release \
-r win-x64 \
--self-contained true \
/p:PublishSingleFile=true \
/p:IncludeNativeLibrariesForSelfExtract=true \
/p:PublishTrimmed=true \
/p:EnableCompressionInSingleFile=true \
/p:DebuggerSupport=false \
/p:DebugType=None \
-o ./publish/win-x64Linux (x64) :
dotnet publish -c Release \
-r linux-x64 \
--self-contained true \
/p:PublishSingleFile=true \
/p:IncludeNativeLibrariesForSelfExtract=true \
/p:PublishTrimmed=true \
/p:EnableCompressionInSingleFile=true \
/p:DebuggerSupport=false \
/p:DebugType=None \
-o ./publish/linux-x64macOS Intel (x64) :
dotnet publish -c Release \
-r osx-x64 \
--self-contained true \
/p:PublishSingleFile=true \
/p:IncludeNativeLibrariesForSelfExtract=true \
/p:PublishTrimmed=true \
/p:EnableCompressionInSingleFile=true \
/p:DebuggerSupport=false \
/p:DebugType=None \
-o ./publish/osx-x64macOS Apple Silicon (ARM64) :
dotnet publish -c Release \
-r osx-arm64 \
--self-contained true \
/p:PublishSingleFile=true \
/p:IncludeNativeLibrariesForSelfExtract=true \
/p:PublishTrimmed=true \
/p:EnableCompressionInSingleFile=true \
/p:DebuggerSupport=false \
/p:DebugType=None \
-o ./publish/osx-arm64Les exécutables optimisés seront générés dans ./publish/<platform>/
Les contributions sont les bienvenues ! N'hésitez pas à :
- Fork le projet
- Créer une branche pour votre fonctionnalité (
git checkout -b feature/AmazingFeature) - Commit vos changements (
git commit -m 'Add some AmazingFeature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrir une Pull Request
- Paramètres Julia personnalisables via l'interface
- Plus de schémas de couleurs
- Export en résolutions personnalisées
- Animation de zoom
- Sauvegarde/chargement de positions favorites
- Support du zoom à la molette
- Drag & drop pour déplacer la vue
- Mode "deep zoom" avec précision arbitraire
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
- Avalonia Team pour le framework UI multiplateforme
- Communauté .NET pour l'écosystème riche
- Benoit Mandelbrot pour la découverte de ces magnifiques fractales
Développé avec ❤️ en C# et Avalonia
Explorez l'infini, une fractale à la fois.