{"id":32714456,"url":"https://github.com/yoanndev90/fractals","last_synced_at":"2026-05-17T02:12:01.586Z","repository":{"id":318935123,"uuid":"1076637230","full_name":"YoannDev90/Fractals","owner":"YoannDev90","description":"Multiple fractal generator in C#","archived":false,"fork":false,"pushed_at":"2025-10-15T19:36:32.000Z","size":94,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-16T15:34:10.532Z","etag":null,"topics":["burning-ship","fractal","julia","mandelbrot","newton","tricorn"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YoannDev90.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-15T06:25:37.000Z","updated_at":"2025-10-15T19:39:46.000Z","dependencies_parsed_at":"2025-10-17T09:01:37.075Z","dependency_job_id":"fd4108e7-44f0-48e6-81b9-09f9b25cbede","html_url":"https://github.com/YoannDev90/Fractals","commit_stats":null,"previous_names":["yoanndev90/fractals"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/YoannDev90/Fractals","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YoannDev90%2FFractals","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YoannDev90%2FFractals/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YoannDev90%2FFractals/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YoannDev90%2FFractals/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YoannDev90","download_url":"https://codeload.github.com/YoannDev90/Fractals/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YoannDev90%2FFractals/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":282284452,"owners_count":26644264,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-02T02:00:06.609Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["burning-ship","fractal","julia","mandelbrot","newton","tricorn"],"created_at":"2025-11-02T12:01:08.271Z","updated_at":"2025-11-02T12:01:59.930Z","avatar_url":"https://github.com/YoannDev90.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎨 Fractals Explorer - Explorateur de Fractales Interactif\n\nUne 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.\n\n![Fractals](https://img.shields.io/badge/.NET-9.0-512BD4?style=flat-square\u0026logo=dotnet)\n![Avalonia](https://img.shields.io/badge/Avalonia-11.3.7-8B44AC?style=flat-square)\n![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey?style=flat-square)\n\n## 📥 Téléchargement\n\n### Versions pré-compilées\n\nTéléchargez la dernière version pour votre système d'exploitation :\n\n| Plateforme | Architecture | Téléchargement                                                                                                      |\n|------------|--------------|---------------------------------------------------------------------------------------------------------------------|\n| 🪟 **Windows** | x64 | [Fractals-windows-x64.exe](https://github.com/YoannDev90/Fractals/releases/download/Fractals-v3/Fractals-linux-x64) |\n| 🐧 **Linux** | x64 | [Fractals-linux-x64](https://github.com/YoannDev90/Fractals/releases/download/Fractals-v3/Fractals-windows-x64.exe) |\n| 🍎 **macOS** | Intel (x64) | [Fractals-osx-x64.zip](https://github.com/YoannDev90/Fractals/releases/download/Fractals-v2/osx-x64.zip)            |\n| 🍎 **macOS** | Apple Silicon (ARM64) | [Fractals-osx-arm64.zip](https://github.com/YoannDev90/Fractals/releases/download/Fractals-v2/osx-arm64.zip)                                       |\n\n**Installation** :\n1. Téléchargez l'archive correspondant à votre système\n2. Extrayez le contenu\n3. Lancez l'exécutable `Fractals` (Linux/macOS) ou `Fractals.exe` (Windows)\n\n**Note pour macOS** : Au premier lancement, faites un clic droit → \"Ouvrir\" pour contourner la vérification Gatekeeper.\n\n**Note pour Linux** : Rendez l'exécutable avec `chmod +x Fractals` si nécessaire.\n\n---\n\n## 📋 Table des matières\n\n- [Téléchargement](#-téléchargement)\n- [Fonctionnalités](#-fonctionnalités)\n- [Fractales disponibles](#-fractales-disponibles)\n- [Utilisation](#-utilisation)\n- [Raccourcis clavier](#️-raccourcis-clavier)\n- [Qualités prédéfinies](#-qualités-prédéfinies)\n- [Architecture technique](#-architecture-technique)\n- [Compilation](#-compilation)\n- [Contribution](#-contribution)\n- [Licence](#-licence)\n\n## ✨ Fonctionnalités\n\n### 🎯 Fractales multiples\n- **Mandelbrot** : La fractale classique et iconique\n- **Julia Set** : Ensemble de Julia avec paramètres personnalisables\n- **Burning Ship** : Variante du Mandelbrot avec valeurs absolues\n- **Tricorn** : Mandelbrot avec conjugaison complexe\n- **Newton Fractal** : Basé sur la méthode de Newton-Raphson\n\n### 🔍 Exploration interactive\n- **Zoom infini** : Explorez les fractales avec un zoom quasi-illimité\n- **Navigation en temps réel** : Suivez les coordonnées complexes sous votre curseur\n- **Zoom centré sur le curseur** : Zoomez directement sur la position de votre souris (touches + et -)\n- **Génération progressive** : Visualisez la fractale en cours de génération ligne par ligne\n- **Pause/Reprise** : Mettez en pause la génération (touche C)\n- **Annulation rapide** : Annulez une génération en cours (touche X)\n\n### 🎨 Rendu de qualité\n- **5 niveaux de qualité** prédéfinis (de 720p à 8K - 7680x4320)\n- **5 niveaux d'itérations** (de 100 à 2000 itérations)\n- **Coloration lissée** (smooth coloring) pour des dégradés fluides\n- **Algorithme optimisé** utilisant du code unsafe pour des performances maximales\n- **Adaptation automatique** à la résolution de votre écran\n\n### 💾 Historique et export\n- **Historique Z/Y** : Navigation Undo/Redo dans vos explorations (jusqu'à 50 états)\n- **Export PNG haute résolution** avec dialogue de sauvegarde\n- **Nommage automatique** incluant la date, l'heure et la résolution\n- **Sauvegarde automatique** des images dans l'historique\n\n### 🎛️ Interface moderne\n- **Panneau flottant** avec design glass morphism moderne\n- **Affichage en temps réel** :\n  - Niveau de zoom avec précision\n  - Coordonnées du centre et du curseur\n  - Statistiques de génération (vitesse, temps restant)\n  - Type de fractale actif\n  - Qualité et itérations sélectionnées\n- **Interface masquable** (touche H) pour des captures d'écran sans éléments d'UI\n- **Mode plein écran** (F11) pour une immersion totale\n\n### 📝 Logging complet\n- **Fichiers journaux** automatiques dans `~/.local/share/Fractals/` (Linux/macOS) ou `%LOCALAPPDATA%\\Fractals\\` (Windows)\n- **Horodatage précis** au milliseconde près\n- **Traçabilité complète** des actions utilisateur et des générations\n\n## 🌀 Fractales disponibles\n\n| Touche | Fractale | Description |\n|--------|----------|-------------|\n| **F1** | Mandelbrot | La fractale classique, centrée sur (-0.5, 0) |\n| **F2** | Julia Set | Ensemble de Julia avec paramètres c = -0.7 + 0.27015i |\n| **F3** | Burning Ship | Variante avec abs() appliqué aux coordonnées |\n| **F4** | Tricorn | Mandelbrot avec conjugaison complexe |\n| **F5** | Newton Fractal | Basé sur z³ - 1 = 0 avec méthode de Newton |\n\n## 🎮 Utilisation\n\n### Premier lancement\n\n1. **Lancez l'application** : L'application démarre automatiquement avec une génération Mandelbrot\n2. **Attendez la génération** : La fractale se génère progressivement (vous pouvez voir la progression)\n3. **Explorez** : Utilisez les touches + et - pour zoomer/dézoomer sur la position du curseur\n4. **Changez de fractale** : Appuyez sur F1-F5 pour changer de type de fractale\n5. **Ajustez la qualité** : Appuyez sur Q+1 à Q+5 pour changer la résolution\n6. **Ajustez les itérations** : Appuyez sur I+1 à I+5 pour changer le niveau de détail\n\n### Exploration avancée\n\n- **Zoom précis** : Placez votre curseur sur une zone intéressante et appuyez sur +\n- **Historique** : Utilisez Z (undo) et Y (redo) pour naviguer dans votre historique\n- **Pause** : Appuyez sur C pour mettre en pause une génération longue\n- **Annulation** : Appuyez sur X pour annuler et revenir à l'état précédent\n- **Export** : Appuyez sur S pour sauvegarder l'image actuelle en PNG\n\n## ⌨️ Raccourcis clavier\n\n### Navigation et fractales\n| Touche | Action |\n|--------|--------|\n| **F1-F5** | Changer le type de fractale (Mandelbrot, Julia, Burning Ship, Tricorn, Newton) |\n| **+ / -** | Zoom in / Zoom out (centré sur le curseur) |\n| **R** | Réinitialiser la vue (retour à la position initiale) |\n\n### Qualité et rendu\n| Touche | Action |\n|--------|--------|\n| **Q + 1-5** | Changer la qualité (résolution) |\n| **I + 1-5** | Changer le nombre d'itérations |\n| **N** | Régénérer manuellement la fractale |\n\n### Contrôles de génération\n| Touche | Action |\n|--------|--------|\n| **C** | Pause / Reprendre la génération |\n| **X** | Annuler la génération et revenir à l'état précédent |\n\n### Historique et sauvegarde\n| Touche | Action |\n|--------|--------|\n| **Z** | Undo (revenir en arrière dans l'historique) |\n| **Y** | Redo (avancer dans l'historique) |\n| **S** | Sauvegarder l'image actuelle (PNG) |\n\n### Interface\n| Touche | Action |\n|--------|--------|\n| **H** | Masquer/Afficher le panneau d'informations |\n| **F11** | Basculer en mode plein écran |\n\n## 📐 Qualités prédéfinies\n\n| Index | Nom | Résolution | Raccourci |\n|-------|-----|------------|-----------|\n| 1 | **Rapide** | 1280 x 720 | Q+1 |\n| 2 | **Normal** | Résolution écran | Q+2 |\n| 3 | **Haute** | 2560 x 1440 | Q+3 |\n| 4 | **Ultra** | 3840 x 2160 (4K) | Q+4 |\n| 5 | **Extrême** | 7680 x 4320 (8K) | Q+5 |\n\n## 🔄 Niveaux d'itérations\n\n| Index | Nom | Itérations | Raccourci | Temps estimé (1080p) |\n|-------|-----|------------|-----------|---------------------|\n| 1 | **Très rapide** | 100 | I+1 | ~0.5s |\n| 2 | **Rapide** | 300 | I+2 | ~1.5s |\n| 3 | **Normal** | 500 | I+3 | ~2.5s |\n| 4 | **Détaillé** | 1000 | I+4 | ~5s |\n| 5 | **Très détaillé** | 2000 | I+5 | ~10s |\n\n*Les temps sont indicatifs et varient selon votre processeur.*\n\n## 🏗️ Architecture technique\n\n### Technologies utilisées\n\n- **.NET 9.0** : Framework moderne et performant\n- **Avalonia UI 11.3.7** : Interface utilisateur multi-plateforme\n- **C# 12** : Langage avec code unsafe pour optimisation\n- **SkiaSharp** : Moteur de rendu graphique\n\n### Structure du projet\n\n```\nFractals/\n├── FractalView.axaml(.cs)        # Interface utilisateur principale\n├── FractalCalculator.cs          # Algorithmes de calcul des fractales\n├── FractalColorizer.cs           # Système de coloration\n├── FractalHistory.cs             # Gestion de l'historique (Undo/Redo)\n├── FractalLogger.cs              # Système de logging\n├── FractalModels.cs              # Modèles de données\n├── FractalPanelManager.cs        # Gestion de l'affichage du panneau\n├── FractalPresetManager.cs       # Gestion des préréglages\n└── AppConfig.cs                  # Configuration TOML (future)\n```\n\n### Optimisations\n\n- **Code unsafe** : Accès direct à la mémoire pour manipulation rapide des pixels\n- **Génération asynchrone** : L'UI reste responsive pendant les calculs\n- **Rafraîchissement progressif** : Affichage tous les 5 lignes pour feedback visuel\n- **Calcul optimisé** : Algorithme d'échappement optimisé pour chaque type de fractale\n- **Smooth coloring** : Interpolation logarithmique pour des couleurs fluides\n\n## 🛠️ Compilation\n\n### Prérequis\n- **.NET 9.0 SDK** : [Télécharger](https://dotnet.microsoft.com/download/dotnet/9.0)\n\n### Depuis les sources\n\n```bash\n# Cloner le dépôt\ngit clone https://github.com/votre-username/Fractals.git\ncd Fractals\n\n# Restaurer les dépendances\ndotnet restore\n\n# Compiler\ndotnet build\n\n# Lancer\ndotnet run\n```\n\n### Publication pour distribution\n\n**Windows (x64)** :\n```bash\ndotnet publish -c Release \\\n  -r win-x64 \\\n  --self-contained true \\\n  /p:PublishSingleFile=true \\\n  /p:IncludeNativeLibrariesForSelfExtract=true \\\n  /p:PublishTrimmed=true \\\n  /p:EnableCompressionInSingleFile=true \\\n  /p:DebuggerSupport=false \\\n  /p:DebugType=None \\\n  -o ./publish/win-x64\n```\n\n**Linux (x64)** :\n```bash\ndotnet publish -c Release \\\n  -r linux-x64 \\\n  --self-contained true \\\n  /p:PublishSingleFile=true \\\n  /p:IncludeNativeLibrariesForSelfExtract=true \\\n  /p:PublishTrimmed=true \\\n  /p:EnableCompressionInSingleFile=true \\\n  /p:DebuggerSupport=false \\\n  /p:DebugType=None \\\n  -o ./publish/linux-x64\n```\n\n**macOS Intel (x64)** :\n```bash\ndotnet publish -c Release \\\n  -r osx-x64 \\\n  --self-contained true \\\n  /p:PublishSingleFile=true \\\n  /p:IncludeNativeLibrariesForSelfExtract=true \\\n  /p:PublishTrimmed=true \\\n  /p:EnableCompressionInSingleFile=true \\\n  /p:DebuggerSupport=false \\\n  /p:DebugType=None \\\n  -o ./publish/osx-x64\n```\n\n**macOS Apple Silicon (ARM64)** :\n```bash\ndotnet publish -c Release \\\n  -r osx-arm64 \\\n  --self-contained true \\\n  /p:PublishSingleFile=true \\\n  /p:IncludeNativeLibrariesForSelfExtract=true \\\n  /p:PublishTrimmed=true \\\n  /p:EnableCompressionInSingleFile=true \\\n  /p:DebuggerSupport=false \\\n  /p:DebugType=None \\\n  -o ./publish/osx-arm64\n```\n\nLes exécutables optimisés seront générés dans `./publish/\u003cplatform\u003e/`\n\n## 🤝 Contribution\n\nLes contributions sont les bienvenues ! N'hésitez pas à :\n\n1. **Fork** le projet\n2. Créer une **branche** pour votre fonctionnalité (`git checkout -b feature/AmazingFeature`)\n3. **Commit** vos changements (`git commit -m 'Add some AmazingFeature'`)\n4. **Push** vers la branche (`git push origin feature/AmazingFeature`)\n5. Ouvrir une **Pull Request**\n\n### Idées de fonctionnalités futures\n\n- [ ] Paramètres Julia personnalisables via l'interface\n- [ ] Plus de schémas de couleurs\n- [ ] Export en résolutions personnalisées\n- [ ] Animation de zoom\n- [ ] Sauvegarde/chargement de positions favorites\n- [ ] Support du zoom à la molette\n- [ ] Drag \u0026 drop pour déplacer la vue\n- [ ] Mode \"deep zoom\" avec précision arbitraire\n\n## 📄 Licence\n\nCe projet est sous licence MIT - voir le fichier `LICENSE` pour plus de détails.\n\n## 🙏 Remerciements\n\n- **Avalonia Team** pour le framework UI multiplateforme\n- **Communauté .NET** pour l'écosystème riche\n- **Benoit Mandelbrot** pour la découverte de ces magnifiques fractales\n\n---\n\n**Développé avec ❤️ en C# et Avalonia**\n\n*Explorez l'infini, une fractale à la fois.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyoanndev90%2Ffractals","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyoanndev90%2Ffractals","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyoanndev90%2Ffractals/lists"}