mirror of
https://github.com/Ladebeze66/fractol.git
synced 2025-12-13 04:37:07 +01:00
picture
This commit is contained in:
parent
81dabf31f5
commit
afa8840234
18
.vscode/c_cpp_properties.json
vendored
Normal file
18
.vscode/c_cpp_properties.json
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "windows-gcc-x64",
|
||||
"includePath": [
|
||||
"${workspaceFolder}/**"
|
||||
],
|
||||
"compilerPath": "gcc",
|
||||
"cStandard": "${default}",
|
||||
"cppStandard": "${default}",
|
||||
"intelliSenseMode": "windows-gcc-x64",
|
||||
"compilerArgs": [
|
||||
""
|
||||
]
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
||||
24
.vscode/launch.json
vendored
Normal file
24
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "C/C++ Runner: Debug Session",
|
||||
"type": "cppdbg",
|
||||
"request": "launch",
|
||||
"args": [],
|
||||
"stopAtEntry": false,
|
||||
"externalConsole": true,
|
||||
"cwd": "e:/42school/projects/fractol",
|
||||
"program": "e:/42school/projects/fractol/build/Debug/outDebug",
|
||||
"MIMode": "gdb",
|
||||
"miDebuggerPath": "gdb",
|
||||
"setupCommands": [
|
||||
{
|
||||
"description": "Enable pretty-printing for gdb",
|
||||
"text": "-enable-pretty-printing",
|
||||
"ignoreFailures": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
59
.vscode/settings.json
vendored
Normal file
59
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
{
|
||||
"C_Cpp_Runner.cCompilerPath": "gcc",
|
||||
"C_Cpp_Runner.cppCompilerPath": "g++",
|
||||
"C_Cpp_Runner.debuggerPath": "gdb",
|
||||
"C_Cpp_Runner.cStandard": "",
|
||||
"C_Cpp_Runner.cppStandard": "",
|
||||
"C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/VR_NR/Community/VC/Auxiliary/Build/vcvarsall.bat",
|
||||
"C_Cpp_Runner.useMsvc": false,
|
||||
"C_Cpp_Runner.warnings": [
|
||||
"-Wall",
|
||||
"-Wextra",
|
||||
"-Wpedantic",
|
||||
"-Wshadow",
|
||||
"-Wformat=2",
|
||||
"-Wcast-align",
|
||||
"-Wconversion",
|
||||
"-Wsign-conversion",
|
||||
"-Wnull-dereference"
|
||||
],
|
||||
"C_Cpp_Runner.msvcWarnings": [
|
||||
"/W4",
|
||||
"/permissive-",
|
||||
"/w14242",
|
||||
"/w14287",
|
||||
"/w14296",
|
||||
"/w14311",
|
||||
"/w14826",
|
||||
"/w44062",
|
||||
"/w44242",
|
||||
"/w14905",
|
||||
"/w14906",
|
||||
"/w14263",
|
||||
"/w44265",
|
||||
"/w14928"
|
||||
],
|
||||
"C_Cpp_Runner.enableWarnings": true,
|
||||
"C_Cpp_Runner.warningsAsError": false,
|
||||
"C_Cpp_Runner.compilerArgs": [],
|
||||
"C_Cpp_Runner.linkerArgs": [],
|
||||
"C_Cpp_Runner.includePaths": [],
|
||||
"C_Cpp_Runner.includeSearch": [
|
||||
"*",
|
||||
"**/*"
|
||||
],
|
||||
"C_Cpp_Runner.excludeSearch": [
|
||||
"**/build",
|
||||
"**/build/**",
|
||||
"**/.*",
|
||||
"**/.*/**",
|
||||
"**/.vscode",
|
||||
"**/.vscode/**"
|
||||
],
|
||||
"C_Cpp_Runner.useAddressSanitizer": false,
|
||||
"C_Cpp_Runner.useUndefinedSanitizer": false,
|
||||
"C_Cpp_Runner.useLeakSanitizer": false,
|
||||
"C_Cpp_Runner.showCompilationTime": false,
|
||||
"C_Cpp_Runner.useLinkTimeOptimization": false,
|
||||
"C_Cpp_Runner.msvcSecureNoWarnings": false
|
||||
}
|
||||
82
README.md
Normal file
82
README.md
Normal file
@ -0,0 +1,82 @@
|
||||
# fract-ol
|
||||

|
||||
Le projet fract-ol de l'École 42 est l'un des premiers projets graphiques du cursus, conçu pour initier les étudiants à la programmation 2D en générant des fractales. Une fractale est une figure géométrique fragmentée qui se répète infiniment à différentes échelles. Ce projet utilise la bibliothèque graphique MiniLibX fournie par l'école.
|
||||
GITHUB.COM
|
||||
|
||||
🎯 Objectifs du Projet
|
||||
Manipulation d'une Bibliothèque Graphique Bas-Niveau : Apprendre à utiliser MiniLibX pour créer des fenêtres, gérer les événements clavier et souris, et dessiner des images.
|
||||
|
||||
Compréhension des Nombres Complexes : Utiliser les nombres complexes pour calculer et représenter des ensembles fractals tels que Mandelbrot et Julia.
|
||||
|
||||
Optimisation des Performances : Améliorer l'efficacité du rendu graphique, notamment en explorant l'utilisation de threads pour le calcul parallèle.
|
||||
|
||||
🛠️ Spécifications Techniques
|
||||
Fractales à Générer :
|
||||
|
||||
Ensemble de Mandelbrot : Défini par l'itération de la fonction
|
||||
𝑧𝑛+1=𝑧𝑛2+𝑐z n+1 =zn2+c, où 𝑧z et 𝑐c sont des nombres complexes.
|
||||
Ensemble de Julia : Similaire à Mandelbrot, mais avec une constante
|
||||
𝑐c fixe et des valeurs initiales
|
||||
𝑧z variant selon les pixels.
|
||||
Ensemble Burning Ship : Variante de Mandelbrot utilisant la valeur absolue des parties réelle et imaginaire de 𝑧z à chaque itération.
|
||||
Fonctionnalités du Programme :
|
||||
|
||||
Zoom et Déplacement : Permettre à l'utilisateur de zoomer et de se déplacer dans la fractale pour explorer différents niveaux de détail.
|
||||
Modification des Paramètres : Changer dynamiquement les paramètres de la fractale, comme les constantes complexes pour l'ensemble de Julia.
|
||||
Changement de Palette de Couleurs : Offrir différentes palettes pour améliorer la visualisation des fractales.
|
||||
Contrôles Utilisateur :
|
||||
|
||||
Souris : Zoom avant/arrière avec la molette, déplacement en cliquant et en faisant glisser.
|
||||
Clavier : Touches pour déplacer la vue, ajuster le niveau de zoom, modifier les paramètres de la fractale et changer les couleurs.
|
||||
|
||||
🔧 Approche d'Implémentation
|
||||
Initialisation de MiniLibX :
|
||||
|
||||
Créer une fenêtre et initialiser une image pour le rendu des fractales.
|
||||
Calcul des Fractales :
|
||||
|
||||
Pour chaque pixel de l'image, convertir les coordonnées en un nombre complexe.
|
||||
Appliquer l'itération de la fonction fractale correspondante.
|
||||
Déterminer la couleur du pixel en fonction du nombre d'itérations avant que la valeur ne diverge au-delà d'un seuil fixé.
|
||||
Gestion des Entrées Utilisateur :
|
||||
|
||||
Implémenter des gestionnaires d'événements pour les entrées clavier et souris afin de permettre l'interaction en temps réel avec la fractale.
|
||||
Optimisation :
|
||||
|
||||
Utiliser des techniques telles que le calcul en parallèle avec des threads pour améliorer la performance du rendu, surtout lors de zooms profonds nécessitant plus d'itérations.
|
||||
|
||||
📂 Structure du Projet
|
||||
Fichiers Principaux :
|
||||
|
||||
main.c : Point d'entrée du programme, gère l'initialisation et la boucle principale.
|
||||
fractals.c : Contient les fonctions de calcul pour chaque type de fractale.
|
||||
events.c : Gère les entrées utilisateur et les événements.
|
||||
utils.c : Fonctions utilitaires pour les calculs complexes et autres opérations.
|
||||
Bibliothèques :
|
||||
|
||||
MiniLibX : Bibliothèque graphique utilisée pour le rendu et la gestion des entrées.
|
||||
pthread : Bibliothèque pour la gestion des threads, si l'optimisation parallèle est implémentée.
|
||||
|
||||
🧪 Tests et Validation
|
||||
Tests Fonctionnels :
|
||||
|
||||
Vérifier que chaque type de fractale est correctement généré et affiché.
|
||||
Tester les fonctionnalités d'interaction utilisateur, comme le zoom, le déplacement et la modification des paramètres.
|
||||
Tests de Performance :
|
||||
|
||||
Évaluer le temps de rendu pour différentes tailles de fenêtre et profondeurs de zoom.
|
||||
Tester l'efficacité des optimisations, notamment l'utilisation de threads pour le calcul parallèle.
|
||||
Tests de Robustesse :
|
||||
|
||||
Assurer la stabilité du programme lors d'entrées utilisateur rapides ou inattendues.
|
||||
Vérifier la gestion appropriée des erreurs, comme des valeurs de paramètres invalides.
|
||||
|
||||
📚 Ressources Utiles
|
||||
Dépôts GitHub :
|
||||
|
||||
[leogaudin/fract-ol : Implémentation détaillée du projet avec des explications sur les fractales et l'utilisation de MiniLibX.][https://github.com/leogaudin/fract-ol]
|
||||
[mcombeau/fract-ol : Un autre exemple d'implémentation, incluant des captures d'écran et des instructions d'utilisation.][https://github.com/mcombeau/fract-ol]
|
||||
|
||||
Articles et Tutoriels :
|
||||
|
||||
[fract-ol: creating graphically beautiful fractals][[fract-ol: creating graphically beautiful fractals]]
|
||||
BIN
picture.png
Normal file
BIN
picture.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.6 MiB |
Loading…
x
Reference in New Issue
Block a user