From 31aea6aefdad1e0de62013e9265650429d4d6af5 Mon Sep 17 00:00:00 2001 From: oqu Date: Sun, 5 Oct 2025 13:22:04 -0700 Subject: [PATCH] Initial version of shapes_math_sine_cosine --- examples/Makefile | 1 + examples/Makefile.Web | 4 + examples/examples_list.txt | 1 + examples/shapes/shapes_math_sine_cosine.c | 180 ++++++++++++++++++++ examples/shapes/shapes_math_sine_cosine.png | Bin 0 -> 55420 bytes 5 files changed, 186 insertions(+) create mode 100644 examples/shapes/shapes_math_sine_cosine.c create mode 100644 examples/shapes/shapes_math_sine_cosine.png diff --git a/examples/Makefile b/examples/Makefile index fb33b4894759..cae754778b27 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -557,6 +557,7 @@ SHAPES = \ shapes/shapes_lines_bezier \ shapes/shapes_logo_raylib \ shapes/shapes_logo_raylib_anim \ + shapes/shapes_math_sine_cosine \ shapes/shapes_rectangle_advanced \ shapes/shapes_rectangle_scaling \ shapes/shapes_ring_drawing \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 0dbefadf2672..aab50a5d0684 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -557,6 +557,7 @@ SHAPES = \ shapes/shapes_lines_bezier \ shapes/shapes_logo_raylib \ shapes/shapes_logo_raylib_anim \ + shapes/shapes_math_sine_cosine \ shapes/shapes_rectangle_advanced \ shapes/shapes_rectangle_scaling \ shapes/shapes_ring_drawing \ @@ -862,6 +863,9 @@ shapes/shapes_logo_raylib: shapes/shapes_logo_raylib.c shapes/shapes_logo_raylib_anim: shapes/shapes_logo_raylib_anim.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) +shapes/shapes_math_sine_cosine: shapes/shapes_math_sine_cosine.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + shapes/shapes_rectangle_advanced: shapes/shapes_rectangle_advanced.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) diff --git a/examples/examples_list.txt b/examples/examples_list.txt index 50643bf2b50e..dee62fe90b57 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -70,6 +70,7 @@ shapes;shapes_digital_clock;★★★★;5.5;5.6;2025;2025;"Hamza RAHAL";@hmz-rh shapes;shapes_double_pendulum;★★☆☆;5.5;5.5;2025;2025;"JoeCheong";@Joecheong2006 shapes;shapes_dashed_line;★☆☆☆;5.5;5.5;2025;2025;"Luís Almeida";@luis605 shapes;shapes_vector_angle;★★☆☆;1.0;5.0;2023;2025;"Ramon Santamaria";@raysan5 +models;shapes_math_sine_cosine;★★★★;5.6-dev;5.6-dev;2025;2025;"Olivier";@oqu textures;textures_logo_raylib;★☆☆☆;1.0;1.0;2014;2025;"Ramon Santamaria";@raysan5 textures;textures_srcrec_dstrec;★★★☆;1.3;1.3;2015;2025;"Ramon Santamaria";@raysan5 textures;textures_image_drawing;★★☆☆;1.4;1.4;2016;2025;"Ramon Santamaria";@raysan5 diff --git a/examples/shapes/shapes_math_sine_cosine.c b/examples/shapes/shapes_math_sine_cosine.c new file mode 100644 index 000000000000..e06b9323be06 --- /dev/null +++ b/examples/shapes/shapes_math_sine_cosine.c @@ -0,0 +1,180 @@ +/******************************************************************************************* + * + * raylib [shapes] example - math sine cosine + * + * Port of the p5.js "sine and cosine" demo to raylib + raygui + * Sources: https://p5js.org/examples/angles-and-motion-sine-cosine/ + * + * Demonstrates uniform circular motion and the correspondence between + * the unit circle and sine / cosine graphs. Right panel contains a + * play/pause toggle implemented with raygui. + * + * Example originally created with raylib 5.6-dev, last time updated with raylib 5.6-dev + * + * Copyright (c) 2025 Olivier (@oqu) + * + ********************************************************************************************/ + +#include "raylib.h" + +// Required for GUI controls +#define RAYGUI_IMPLEMENTATION +#include "raygui.h" + +#include + +int main(void) +{ + // Window initialization + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [shapes] example - math sine cosine"); + const char* playText = "Play"; + const char* pauseText = "Pause"; + + // Scene layout (mimic p5 example positioning) + const float circleX = 200.0f; + const float circleY = 150.0f; + const float circleRadius = 75.0f; + + const float graphX = 50.0f; + const float graphY = 300.0f; + const float graphAmplitude = 50.0f; + const float graphPeriod = 300.0f; // width of the graph in pixels + + // Animation / UI state + bool playing = true; // play / pause toggle + int frameCountLocal = 0; // local frame counter (used when playing) + + SetTargetFPS(60); + + // Main loop + while (!WindowShouldClose()) + { + // Handle GUI and input first + BeginDrawing(); + + ClearBackground(BLACK); + + // Right control panel + float panelX = (float)GetScreenWidth() - 270.0f; + Rectangle panel = {panelX, 10, 260, (float)GetScreenHeight() - 20}; + DrawRectangleRec(panel, Fade(LIGHTGRAY, 0.6f)); + DrawRectangleLinesEx(panel, 1, GRAY); + + int y = 20; + int px = (int)panelX + 10; + DrawText("Sine / Cosine Demo", px, y, 20, DARKGRAY); + y += 34; + + // Play / Pause toggle + DrawText("Animation:", px, y, 14, DARKGRAY); + y += 18; + GuiToggle((Rectangle){(float)px, y, 220, 30}, playing ? pauseText : playText, &playing); + y += 40; + + // Small description + DrawText("Animated demonstration of a point moving", px, y, 10, DARKGRAY); + y += 14; + DrawText("around the unit circle and the corresponding", px, y, 10, DARKGRAY); + y += 14; + DrawText("sine (red) and cosine (orange) graphs.", px, y, 10, DARKGRAY); + y += 30; + + DrawFPS(px, GetScreenHeight() - 30); + + // Update frameCount if playing + if (playing) + frameCountLocal++; + + // Angle in degrees (like the p5 example) + int angleDeg = frameCountLocal % 360; + + // Draw angle label + Color labelCol = WHITE; + DrawText(TextFormat("angle: %d", angleDeg), 25, 25, 20, labelCol); + + // --- Draw circle and diameters --- + // circle outer + DrawCircleLines((int)circleX, (int)circleY, circleRadius, Fade(GRAY, 0.6f)); + // diameters + DrawLine((int)circleX, (int)(circleY - circleRadius), (int)circleX, (int)(circleY + circleRadius), Fade(GRAY, 0.6f)); + DrawLine((int)(circleX - circleRadius), (int)circleY, (int)(circleX + circleRadius), (int)circleY, Fade(GRAY, 0.6f)); + + // Compute moving point on circle (cos for x, sin for y). Note: cos/sin in C expect radians + float angRad = angleDeg * (PI / 180.0f); + float pointX = circleX + circleRadius * cosf(angRad); + float pointY = circleY - circleRadius * sinf(angRad); // minus to match p5 y-axis direction + + // line from center to point + DrawLine((int)circleX, (int)circleY, (int)pointX, (int)pointY, Fade(GRAY, 0.6f)); + + // moving points + DrawCircleV((Vector2){pointX, pointY}, 6.0f, WHITE); + DrawCircle((int)pointX, (int)circleY, 6.0f, ORANGE); + DrawCircle((int)circleX, (int)pointY, 6.0f, RED); + + // --- Draw graph area axes --- + // axes lines + DrawLine((int)graphX, (int)graphY, (int)(graphX + graphPeriod), (int)graphY, Fade(GRAY, 0.6f)); + DrawLine((int)graphX, (int)(graphY - graphAmplitude), (int)graphX, (int)(graphY + graphAmplitude), Fade(GRAY, 0.6f)); + DrawLine((int)(graphX + graphPeriod), (int)(graphY - graphAmplitude), (int)(graphX + graphPeriod), (int)(graphY + graphAmplitude), Fade(GRAY, 0.6f)); + + // labels + DrawText("0", (int)graphX - 6, (int)(graphY + graphAmplitude + 6), 14, Fade(GRAY, 0.9f)); + DrawText("360", (int)(graphX + graphPeriod) - 12, (int)(graphY + graphAmplitude + 6), 14, Fade(GRAY, 0.9f)); + DrawText("1", (int)(graphX / 2) - 6, (int)(graphY - graphAmplitude) - 6, 14, Fade(GRAY, 0.9f)); + DrawText("0", (int)(graphX / 2) - 6, (int)(graphY)-6, 14, Fade(GRAY, 0.9f)); + DrawText("-1", (int)(graphX / 2) - 10, (int)(graphY + graphAmplitude) - 6, 14, Fade(GRAY, 0.9f)); + + DrawText("cos", (int)(graphX + graphPeriod + graphX / 2) - 18, (int)(graphY - graphAmplitude) - 10, 20, ORANGE); + DrawText("sin", (int)(graphX + graphPeriod + graphX / 2) - 18, (int)(graphY) - 10, 20, RED); + + // --- Draw cosine curve (orange) --- + for (int t = 0; t <= 360; t++) + { + float x = ((float)t / 360.0f) * graphPeriod + graphX; + float y = graphY - graphAmplitude * cosf(t * (PI / 180.0f)); + // draw small segments between consecutive points for smoother curve + if (t > 0) + { + int prevT = t - 1; + float px = ((float)prevT / 360.0f) * graphPeriod + graphX; + float py = graphY - graphAmplitude * cosf(prevT * (PI / 180.0f)); + DrawLineEx((Vector2){px, py}, (Vector2){x, y}, 2.5f, ORANGE); + } + } + + // --- Draw sine curve (red) --- + for (int t = 0; t <= 360; t++) + { + float x = ((float)t / 360.0f) * graphPeriod + graphX; + float y = graphY - graphAmplitude * sinf(t * (PI / 180.0f)); + if (t > 0) + { + int prevT = t - 1; + float px = ((float)prevT / 360.0f) * graphPeriod + graphX; + float py = graphY - graphAmplitude * sinf(prevT * (PI / 180.0f)); + DrawLineEx((Vector2){px, py}, (Vector2){x, y}, 2.5f, RED); + } + } + + // --- Draw moving vertical line on the graph corresponding to the angle --- + float lineX = ((float)angleDeg / 360.0f) * graphPeriod + graphX; + DrawLine((int)lineX, (int)(graphY - graphAmplitude), (int)lineX, (int)(graphY + graphAmplitude), Fade(GRAY, 0.6f)); + + // moving points on graph + float orangeY = graphY - graphAmplitude * cosf(angRad); + float redY = graphY - graphAmplitude * sinf(angRad); + + DrawCircle((int)lineX, (int)orangeY, 6.0f, ORANGE); + DrawCircle((int)lineX, (int)redY, 6.0f, RED); + + EndDrawing(); + } + + CloseWindow(); + + return 0; +} \ No newline at end of file diff --git a/examples/shapes/shapes_math_sine_cosine.png b/examples/shapes/shapes_math_sine_cosine.png new file mode 100644 index 0000000000000000000000000000000000000000..8f42724a26edac1c8977a971b468ab3ee2d351be GIT binary patch literal 55420 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