From b847f87ee5a33ce410f92fe23539c50b0fdac6df Mon Sep 17 00:00:00 2001 From: Abdelrahman Date: Sun, 25 Feb 2024 20:30:26 +0000 Subject: [PATCH] Move line_from_origin and aabb functions to the window code --- include/window.h | 2 ++ src/window.c | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/include/window.h b/include/window.h index 6263cfd..e2a958e 100644 --- a/include/window.h +++ b/include/window.h @@ -80,5 +80,7 @@ void draw_rect(const window *wnd, rect rec, colour colour); void fill_triangle(const window *wnd, triangle triangle, colour colour); void fill_quad(const window *wnd, quad qd, colour colour); void fill_rect(const window *wnd, rect rec, colour colour); +line line_from_origin(point origin, f64 angle, i32 line_length); +bool aabb(rect rec, i32 x, i32 y); #endif // !WINDOW_H diff --git a/src/window.c b/src/window.c index cdf38c0..e16267c 100644 --- a/src/window.c +++ b/src/window.c @@ -162,6 +162,24 @@ void fill_quad(const window *wnd, quad qd, colour colour) { fill_triangle(wnd, t1, colour); } +line line_from_origin(point origin, f64 angle, i32 line_length) { + f64 rad = radians(angle); + f64 direction = angle / absolute(angle) * -1; + + i32 adjacent = line_length * cos(rad) * direction; // dx + i32 opposite = line_length * sin(rad) * direction; // dy + + return (line){ + (point){origin.x + adjacent, origin.y + opposite}, + origin, + }; +} + +bool aabb(rect rec, i32 x, i32 y) { + return x > rec.topleft.x && x <= rec.topleft.x + rec.w && y > rec.topleft.y && + y <= rec.topleft.y + rec.h; +} + internal inline bool inside_triangle(triangle tri, point p) { // Based on the following video: // https://www.youtube.com/watch?v=HYAgJN3x4GA