From 3cb38a12d9f2a989d2a3ffc0106e90c7d8972a0f Mon Sep 17 00:00:00 2001 From: _N3m0 Date: Thu, 28 Mar 2024 15:20:17 +0100 Subject: [PATCH] init --- .gitignore | 1 + LICENSE | 20 ++++++++++++++++ Makefile | 10 ++++++++ README.md | 17 +++++++++++++ exemple.png | Bin 0 -> 34274 bytes main.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 115 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 README.md create mode 100644 exemple.png create mode 100644 main.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a007fea --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build/* diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..89219dd --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2024 Hamza NANAHA + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..03c822f --- /dev/null +++ b/Makefile @@ -0,0 +1,10 @@ +$(shell mkdir -p build) + +all: + gcc -Wall -Wextra main.c -o build/main -lraylib -lm + +release: + gcc -Wall -Wextra -O3 -DRELEASE main.c -o build/main -lraylib -lm + +run: all + ./build/main diff --git a/README.md b/README.md new file mode 100644 index 0000000..762dcc5 --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +# Fractouille + +![exemple](exemple.png) + +Small tree fractal. + +# Keybind + +- esc : quit +- d : decrease angle +- a or q : increase angle + +# Building + +```console +$ make +``` diff --git a/exemple.png b/exemple.png new file mode 100644 index 0000000000000000000000000000000000000000..63f0827c9d9b71bfc74d0149a96cfe15989f4e2f GIT binary patch literal 34274 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

mtM(>KEbZ+$s{Q$s3%w8Z9v36zdcn|! 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 literal 0 HcmV?d00001 diff --git a/main.c b/main.c new file mode 100644 index 0000000..c0f5528 --- /dev/null +++ b/main.c @@ -0,0 +1,67 @@ +#include +#include + +#include "raylib.h" + +#define RAD_TO_DEG(rad) (rad) * (180 / PI) +#define DEG_TO_RAD(deg) (deg) / (180 / PI) + +#define COLOR ORANGE + +const Vector2 screen = {.x = 1000, .y = 1000}; + +void branche(Vector2 origin, float base_angle, float angle, float step, int level) +{ + if (level <= 0) + return; + + Vector2 dest = { + .x = origin.x + cos(DEG_TO_RAD(angle)) * step, + .y = origin.y - sin(DEG_TO_RAD(angle)) * step, + }; + DrawLineEx(origin, dest, level/6, COLOR); + + branche(dest, base_angle, angle + base_angle/2, step*3/4, level-1); + branche(dest, base_angle, angle - base_angle/2, step*3/4, level-1); +} + +void arbre(float angle, float step, float level) +{ + Vector2 origin = {screen.x/2, screen.y - 50}; + Vector2 dest = {origin.x, origin.y - step}; + DrawLineEx(origin, dest, level/4, COLOR); + + branche(dest, angle, 90.0f + angle/2, step/2, level); + branche(dest, angle, 90.0f - angle/2, step/2, level); +} + +int main(void) +{ + float angle = 90.0f; + + SetTraceLogLevel(LOG_ERROR); + InitWindow(screen.x, screen.y, "arbre"); + SetTargetFPS(60); + + while (!WindowShouldClose()) { + BeginDrawing(); + { + ClearBackground(BLACK); + + if (IsKeyDown(KEY_D)) + angle -= 0.7f; + if (IsKeyDown(KEY_A)) + angle += 0.7f; + + arbre(angle, screen.x/4, 16); + + printf(" %.02f \r", angle); + fflush(stdout); + } + EndDrawing(); + } + + CloseWindow(); + printf("\n"); + return 0; +}