init
This commit is contained in:
commit
3cb38a12d9
|
@ -0,0 +1 @@
|
||||||
|
build/*
|
|
@ -0,0 +1,20 @@
|
||||||
|
Copyright (c) 2024 Hamza NANAHA <hamza.nanaha@hotmail.com>
|
||||||
|
|
||||||
|
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.
|
|
@ -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
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Fractouille
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Small tree fractal.
|
||||||
|
|
||||||
|
# Keybind
|
||||||
|
|
||||||
|
- esc : quit
|
||||||
|
- d : decrease angle
|
||||||
|
- a or q : increase angle
|
||||||
|
|
||||||
|
# Building
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ make
|
||||||
|
```
|
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
|
@ -0,0 +1,67 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#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;
|
||||||
|
}
|
Loading…
Reference in New Issue