https://github.com/yoanndev90/fractals
Multiple fractal generator in C#
https://github.com/yoanndev90/fractals
burning-ship fractal julia mandelbrot newton tricorn
Last synced: 2 months ago
JSON representation
Multiple fractal generator in C#
- Host: GitHub
- URL: https://github.com/yoanndev90/fractals
- Owner: YoannDev90
- Created: 2025-10-15T06:25:37.000Z (3 months ago)
- Default Branch: master
- Last Pushed: 2025-10-15T19:36:32.000Z (3 months ago)
- Last Synced: 2025-10-16T15:34:10.532Z (3 months ago)
- Topics: burning-ship, fractal, julia, mandelbrot, newton, tricorn
- Language: C#
- Homepage:
- Size: 91.8 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# đš Fractals Explorer - Explorateur de Fractales Interactif
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Ă©chargement
### Versions pré-compilées
Téléchargez la derniÚre version pour votre systÚme d'exploitation :
| Plateforme | Architecture | Téléchargement |
|------------|--------------|---------------------------------------------------------------------------------------------------------------------|
| đȘ **Windows** | x64 | [Fractals-windows-x64.exe](https://github.com/YoannDev90/Fractals/releases/download/Fractals-v3/Fractals-linux-x64) |
| đ§ **Linux** | x64 | [Fractals-linux-x64](https://github.com/YoannDev90/Fractals/releases/download/Fractals-v3/Fractals-windows-x64.exe) |
| đ **macOS** | Intel (x64) | [Fractals-osx-x64.zip](https://github.com/YoannDev90/Fractals/releases/download/Fractals-v2/osx-x64.zip) |
| đ **macOS** | Apple Silicon (ARM64) | [Fractals-osx-arm64.zip](https://github.com/YoannDev90/Fractals/releases/download/Fractals-v2/osx-arm64.zip) |
**Installation** :
1. Téléchargez l'archive correspondant à votre systÚme
2. Extrayez le contenu
3. Lancez l'exécutable `Fractals` (Linux/macOS) ou `Fractals.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.
---
## đ Table des matiĂšres
- [Téléchargement](#-téléchargement)
- [Fonctionnalités](#-fonctionnalités)
- [Fractales disponibles](#-fractales-disponibles)
- [Utilisation](#-utilisation)
- [Raccourcis clavier](#ïž-raccourcis-clavier)
- [Qualités prédéfinies](#-qualités-prédéfinies)
- [Architecture technique](#-architecture-technique)
- [Compilation](#-compilation)
- [Contribution](#-contribution)
- [Licence](#-licence)
## ⚠Fonctionnalités
### đŻ Fractales multiples
- **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
### đ Exploration interactive
- **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)
### đš Rendu de qualitĂ©
- **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 et export
- **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
### đïž Interface moderne
- **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
### đ Logging complet
- **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
## đ Fractales disponibles
| 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 |
## đź Utilisation
### Premier lancement
1. **Lancez l'application** : L'application démarre automatiquement avec une génération Mandelbrot
2. **Attendez la génération** : La fractale se génÚre progressivement (vous pouvez voir la progression)
3. **Explorez** : Utilisez les touches + et - pour zoomer/dézoomer sur la position du curseur
4. **Changez de fractale** : Appuyez sur F1-F5 pour changer de type de fractale
5. **Ajustez la qualité** : Appuyez sur Q+1 à Q+5 pour changer la résolution
6. **Ajustez les itérations** : Appuyez sur I+1 à I+5 pour changer le niveau de détail
### Exploration avancée
- **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
## âšïž Raccourcis clavier
### Navigation et fractales
| 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) |
### Qualité et rendu
| 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 |
### ContrÎles de génération
| Touche | Action |
|--------|--------|
| **C** | Pause / Reprendre la génération |
| **X** | Annuler la génération et revenir à l'état précédent |
### Historique et sauvegarde
| Touche | Action |
|--------|--------|
| **Z** | Undo (revenir en arriĂšre dans l'historique) |
| **Y** | Redo (avancer dans l'historique) |
| **S** | Sauvegarder l'image actuelle (PNG) |
### Interface
| Touche | Action |
|--------|--------|
| **H** | Masquer/Afficher le panneau d'informations |
| **F11** | Basculer en mode plein écran |
## đ QualitĂ©s prĂ©dĂ©finies
| 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 |
## đ Niveaux d'itĂ©rations
| 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.*
## đïž Architecture technique
### Technologies utilisées
- **.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
### Structure du projet
```
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)
```
### Optimisations
- **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
## đ ïž Compilation
### Prérequis
- **.NET 9.0 SDK** : [Télécharger](https://dotnet.microsoft.com/download/dotnet/9.0)
### Depuis les sources
```bash
# 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 run
```
### Publication pour distribution
**Windows (x64)** :
```bash
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-x64
```
**Linux (x64)** :
```bash
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-x64
```
**macOS Intel (x64)** :
```bash
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-x64
```
**macOS Apple Silicon (ARM64)** :
```bash
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-arm64
```
Les exécutables optimisés seront générés dans `./publish//`
## đ€ Contribution
Les contributions sont les bienvenues ! N'hésitez pas à :
1. **Fork** le projet
2. Créer une **branche** pour votre fonctionnalité (`git checkout -b feature/AmazingFeature`)
3. **Commit** vos changements (`git commit -m 'Add some AmazingFeature'`)
4. **Push** vers la branche (`git push origin feature/AmazingFeature`)
5. Ouvrir une **Pull Request**
### Idées de fonctionnalités futures
- [ ] 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
## đ Licence
Ce projet est sous licence MIT - voir le fichier `LICENSE` pour plus de détails.
## đ Remerciements
- **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.*