From f94b4628ed7f8856ca9b71249a764752ed5e2517 Mon Sep 17 00:00:00 2001 From: zeefaad Date: Sun, 28 Dec 2025 14:08:19 +0100 Subject: [PATCH] cuve de gaz --- main.c | 69 ++++++++++++++++++++++++++++++++++++++++++------------ michelson | Bin 129784 -> 129664 bytes 2 files changed, 54 insertions(+), 15 deletions(-) diff --git a/main.c b/main.c index fa3ba32..9adb634 100644 --- a/main.c +++ b/main.c @@ -16,6 +16,8 @@ typedef struct { float lambda; float angleM1; Vector2 center; + bool gaz; + float nGaz; } Michelson; Color WavelengthToColor(float lambda) { @@ -47,9 +49,9 @@ bool GuiButtonRepeat(Rectangle bounds, const char* text, bool shouldRepeat) { return clicked || held; } +/* void DrawInterferenceViewCPU(Michelson *mic, Rectangle rec) { DrawRectangleRec((Rectangle){rec.x - 4, rec.y - 30, rec.width + 8, rec.height + 34}, COLOR_PANEL); - //DrawText("ECRAN", rec.x, rec.y - 30, 20, WHITE); DrawText("ECRAN", rec.x, rec.y - 26, 20, COLOR_TEXT_DIM); DrawRectangleRec(rec, BLACK); @@ -57,8 +59,14 @@ void DrawInterferenceViewCPU(Michelson *mic, Rectangle rec) { Color baseColor = WavelengthToColor(mic->lambda); + float extraPath = 0.0f; + if (mic->gaz) + extraPath = 2.0f * 100.0f * (mic->nGaz - 1.0f); + + float d2_effective = mic->d2 + (extraPath / 2.0f); + // Diff de marche du à l'axe (2 * e) + micro -> nano - float deltaLnm = 2.0f * (mic->d1 - mic->d2) * 1000.0f; + float deltaLnm = 2.0f * (mic->d1 - d2_effective) * 1000.0f; int cx = rec.x + rec.width / 2; int cy = rec.y + rec.height / 2; @@ -98,6 +106,7 @@ void DrawInterferenceViewCPU(Michelson *mic, Rectangle rec) { DrawLine(cx - 10, cy, cx + 10, cy, Fade(WHITE, 0.5f)); DrawLine(cx, cy - 10, cx, cy + 10, Fade(WHITE, 0.5f)); } +*/ void DrawInterferenceViewGPU(Michelson *mic, Rectangle rec, Shader shader, bool *isFullscreen) { @@ -119,12 +128,17 @@ void DrawInterferenceViewGPU(Michelson *mic, Rectangle rec, Shader shader, bool float scrHeight = (float)GetScreenHeight(); float zoom = *isFullscreen ? 0.7 : 1; - // + float addedOpticalPathOneWay = 0.0f; + if (mic->gaz) { + addedOpticalPathOneWay = 100.0f * (mic->nGaz - 1.0f); + } + float d2_effective = mic->d2 + addedOpticalPathOneWay; + SetShaderValue(shader, GetShaderLocation(shader, "center"), center, SHADER_UNIFORM_VEC2); SetShaderValue(shader, GetShaderLocation(shader, "screenHeight"), &scrHeight, SHADER_UNIFORM_FLOAT); SetShaderValue(shader, GetShaderLocation(shader, "d1"), &mic->d1, SHADER_UNIFORM_FLOAT); - SetShaderValue(shader, GetShaderLocation(shader, "d2"), &mic->d2, SHADER_UNIFORM_FLOAT); + SetShaderValue(shader, GetShaderLocation(shader, "d2"), &d2_effective, SHADER_UNIFORM_FLOAT); SetShaderValue(shader, GetShaderLocation(shader, "lambda"), &mic->lambda, SHADER_UNIFORM_FLOAT); SetShaderValue(shader, GetShaderLocation(shader, "angleM1"), &mic->angleM1, SHADER_UNIFORM_FLOAT); SetShaderValue(shader, GetShaderLocation(shader, "zoom"), &zoom, SHADER_UNIFORM_FLOAT); @@ -183,6 +197,18 @@ void DrawMichelsonSchema (Michelson *mic) { DrawRectangleLines(startSource.x - 30, startSource.y - 20, 30, 40, GRAY); DrawText("Source", startSource.x - 50, startSource.y - 50, 20, LIGHTGRAY); + if (mic->gaz) { + float cellDist = 80.0f; + float cellW = 60.0f; + float cellH = 40.0f; + Rectangle cellRect = {c.x + cellDist, c.y - cellH / 2, cellW, cellH}; + + DrawRectangleRec(cellRect, Fade(BLUE, 0.15f + (mic->nGaz - 1.0f) * 2.0f)); + DrawRectangleLinesEx(cellRect, 2, SKYBLUE); + + DrawText(TextFormat("n=%.3f", mic->nGaz), c.x + cellDist, c.y + 25, 10, SKYBLUE); + } + // M2 DrawRectangle(posM2.x, posM2.y - (mirrorSize / 2), 12, mirrorSize, LIGHTGRAY); DrawRectangle(posM2.x, posM2.y - (mirrorSize / 2) + 2, 4, mirrorSize - 4, WHITE); @@ -269,27 +295,40 @@ void DrawControlPanel(Michelson *mic) { // Angle M1 startY += 90; DrawText(TextFormat("Inclinaison M1: %.3f deg", mic->angleM1), startX, startY, 20, ORANGE); - float stepAngle = speedMode ? 0.05f : 0.001f; - if (GuiButtonRepeat((Rectangle){startX, startY + 30, btnSize, 25}, "-", shouldRepeat)) mic->angleM1 -= stepAngle; GuiSlider((Rectangle){startX + btnSize + 5, startY + 30, sliderWidth - 75, 25}, 0, 0, &mic->angleM1, -1.0f, 1.0f); if (GuiButtonRepeat((Rectangle){startX + btnSize + sliderWidth - 65, startY + 30, btnSize, 25}, "+", shouldRepeat)) mic->angleM1 += stepAngle; if (GuiButton((Rectangle){startX + contentWidth - 60, startY + 30, 60, 25}, "Zero")) mic->angleM1 = 0.0f; - - + // Status + startY += 70; bool isLameAir = (fabs(mic->angleM1) < 0.001f); - const char* modeTxt = isLameAir ? "MODE: LAME D'AIR" : "MODE: COIN D'AIR"; + const char* modeTxt = isLameAir ? "LAME D'AIR" : "COIN D'AIR"; Color modeColor = isLameAir ? SKYBLUE : GREEN; - - DrawRectangle(startX, startY + 70, contentWidth, 30, Fade(modeColor, 0.2f)); - DrawRectangleLines(startX, startY + 70, contentWidth, 30, modeColor); - DrawText(modeTxt, startX + 10, startY + 78, 18, modeColor); + + DrawRectangle(startX, startY, contentWidth, 30, Fade(modeColor, 0.2f)); + DrawRectangleLines(startX, startY, contentWidth, 30, modeColor); + DrawText(modeTxt, startX + 10, startY + 8, 20, modeColor); + + // Cuve de gaz + startY += 50; + DrawLine(startX, startY - 10, startX + contentWidth, startY - 10, Fade(GRAY, 0.3f)); + DrawText("Cuve de Gaz (Indice n)", startX, startY, 20, SKYBLUE); + GuiCheckBox((Rectangle){startX, startY + 30, 20, 20}, "Cuve", &mic->gaz); + if (mic->gaz) { + DrawText(TextFormat("n = %.4f", mic->nGaz), startX + 150, startY + 30, 20, WHITE); + float stepN = speedMode ? 0.001f : 0.0001f; + if (GuiButtonRepeat((Rectangle){startX, startY + 55, btnSize, 25}, "-", shouldRepeat)) mic->nGaz -= stepN; + GuiSlider((Rectangle){startX + btnSize + 5, startY + 55, sliderWidth - 10, 25}, NULL, NULL, &mic->nGaz, 1.000f, 1.100f); + if (GuiButtonRepeat((Rectangle){startX + btnSize + sliderWidth, startY + 55, btnSize, 25}, "+", shouldRepeat)) mic->nGaz += stepN; + if (mic->nGaz < 1.0f) mic->nGaz = 1.0f; + //startY += 90; + } // Données - startY += 150; - DrawLine(startX, startY - 20, startX + contentWidth, startY - 20, GRAY); + startY += 100; + DrawLine(startX, startY - 10, startX + contentWidth, startY - 10, GRAY); DrawText("DONNEES TEMPS REEL", startX, startY, 20, GRAY); float delta = 2 * (mic->d1 - mic->d2); diff --git a/michelson b/michelson index 537eb3b0916c46350fd35369602f901406856bc1..1d80071366acb324399fae54cb025344ab80f5da 100755 GIT binary patch delta 25793 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 delta 25350 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 R2z|{O=m$IzJzulR{|`QR*(Cq~