Compare commits

...

3 Commits

Author SHA1 Message Date
42d69b6ce4 readme 2025-12-29 15:28:34 +01:00
8d42cda17f readme 2025-12-29 15:22:05 +01:00
5010c30886 odrre 2025-12-29 15:21:09 +01:00
3 changed files with 66 additions and 2 deletions

View File

@ -1 +1,65 @@
# TODO
# Simulateur d'Interféromètre de Michelson
Une simulation interactive temps réel et physiquement réaliste de l'interféromètre de Michelson. Ce projet permet de visualiser les figures d'interférences (franges et anneaux) en manipulant les composants optiques (miroirs, source lumineuse, milieu).
![Aperçu du simulateur](img/screenshot.png)
## Fonctionnalités
### Contrôle et Simulation
* **Miroir Mobile (M1) :** Translation et inclinaison sur deux axes.
* **Sources Lumineuses :**
* Spectre (380nm - 780nm).
* Gestion de **sources polychromatiques** (ajout/suppression de longueurs d'onde multiples).
* Rendu additif des couleurs.
* **Milieux dispersifs :** Ajout d'une cuve de gaz avec indice de réfraction variable n pour visualiser le déphasage.
### Performance & Rendu
* **Rendu GPU :** Calcul des interférences par **shader (GLSL)** pour des performances élevées.
* **Interface UI :** `raygui`.
* **Optimisation :** Sélecteur de **FPS Cible** (30, 60, 120, 144, Illimité).
* **Vue Hybride :** Schéma optique 2D + Vue "Écran".
## Installation et Compilation
### Prérequis
* **[Raylib](https://www.raylib.com/)**
* **[Emscripten](https://github.com/emscripten-core/emscripten/)**
### Compilation (Linux / Mac)
```bash
make
make run
```
ou
```bash
gcc main.c -o michelson -lraylib -lGL -lm -lpthread -ldl -lrt -lX11
./michelson
```
### Version Web (Emscripten)
```bash
make web
make webrun
```
ou
```bash
mkdir -p web && emcc -o web/index.html main.c -Os -Wall -std=c99 -DPLATFORM_WEB -s USE_GLFW=3 -s ALLOW_MEMORY_GROWTH=1 -I. --shell-file minshell.html --preload-file glsl/michelson_web.frag raylib/libraylib.web.a
```
## Contrôles Utilisateur
| Action | Commande |
| --- | --- |
| **Plein Écran** | Touche `F` |
| **Sélectionner une longueur d'onde** | `Clic Gauche` sur le spectre |
| **Ajouter une longueur d'onde** | `Clic Droit` sur une zone vide du spectre |
| **Supprimer une longueur d'onde** | `Clic Droit` sur une ligne existante |
| **Régler les miroirs** | Sliders / boutons `+` / `-` |
| **Précision / Vitesse** | Maintenir `Shift` (Gauche ou Droite) |
## Physique du projet
Calcule de l'intensité lumineuse en tout point de l'écran en se basant sur la différence de marche.

BIN
img/screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

2
main.c
View File

@ -444,7 +444,7 @@ void DrawControlPanel(Michelson *mic) {
float refLambda = mic->lambdas[mic->selectedLambdaIndex];
float p = (delta * 1000.0f) / refLambda;
DrawText(TextFormat("Ordre p (sel) = %.2f", p), startX, startY + 65, 20, WHITE);
DrawText(TextFormat("Ordre p = %.2f", p), startX, startY + 65, 20, WHITE);
// FPS
int bottomY = GetScreenHeight() - 40;