From c81f8fb94233c45ac6fd9bf025d9e704133d35ca Mon Sep 17 00:00:00 2001 From: Tenari Date: Fri, 19 Jun 2026 07:16:21 -0500 Subject: [PATCH] lol everyone re-invents a vector lib --- all.h | 3 +++ math.c | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/all.h b/all.h index 31d9add..59718c1 100644 --- a/all.h +++ b/all.h @@ -622,6 +622,9 @@ fn Range1u64 range1u64Create(u64 min, u64 max); fn Range1u64 mRangeFromNIdxMCount(u64 n_idx, u64 n_count, u64 m_count); fn void u32Quicksort(u32 arr[], u32 low, u32 high); fn void u32ReverseArray(u32 arr[], u32 size); +fn Vec2f32 vec2Add(Vec2 a, Vec2 b); +fn Vec2f32 vec2Subtract(Vec2 a, Vec2 b); +fn Vec2f32 vec2FromHexCube(Vec2 map_center, XYZ cube, f32 size, f32 border_thickness); ///// MEMORY (Arenas) #define ARENA_MAX GB(1) diff --git a/math.c b/math.c index dd52e7d..0aeceea 100644 --- a/math.c +++ b/math.c @@ -72,3 +72,30 @@ fn void u32ReverseArray(u32 arr[], u32 size) { } } +fn Vec2f32 vec2Add(Vec2 a, Vec2 b) { + Vec2f32 result = a; + result.x += b.x; + result.y += b.y; + return result; +} + +fn Vec2f32 vec2Subtract(Vec2 a, Vec2 b) { + Vec2f32 result = a; + result.x -= b.x; + result.y -= b.y; + return result; +} + +fn Vec2f32 vec2FromHexCube(Vec2 map_center, XYZ cube, f32 size, f32 border_thickness) { + f32 hex_height = SQRT_3 * size; + f32 hex_width = 2.0 * size; + f32 horiz_spacing = 0.75 * (hex_width - border_thickness); + f32 vert_spacing = (hex_height - border_thickness); + bool parity = cube.x & 1; + i32 use_y = cube.y * -1; + return (Vec2) { + .x = map_center.x + (cube.x * horiz_spacing), + .y = map_center.y + ((use_y + (f32)(cube.x + parity) / 2.0) * vert_spacing) - (parity ? 0.5*vert_spacing : 0), + }; +} +