added range.c

This commit is contained in:
randy 2024-07-09 18:40:48 +07:00
parent cc8d186dc3
commit 36c6ff5589
2 changed files with 43 additions and 0 deletions

View file

@ -265,6 +265,7 @@ typedef u8 bool;
#include "hash.c"
#include "path_utils.c"
#include "linmath.c"
#include "range.c"
#include "hash_table.c"

42
oogabooga/range.c Normal file
View file

@ -0,0 +1,42 @@
// randy: we might wanna remove the f by default, similar to the Vector2 ?
// I know that we'll have a Range2i at some point, so maybe it's better to be explicit for less confusion?
// I'll leave this decision up to u charlie just delete this whenever u see it
typedef struct Range1f {
float min;
float max;
} Range1f;
// ...
typedef struct Range2f {
Vector2 min;
Vector2 max;
} Range2f;
inline Range2f range2f_make(Vector2 min, Vector2 max) { return (Range2f) { min, max }; }
Range2f range2f_shift(Range2f r, Vector2 shift) {
r.min = v2_add(r.min, shift);
r.max = v2_add(r.max, shift);
return r;
}
Range2f range2f_make_bottom_center(Vector2 size) {
Range2f range = {0};
range.max = size;
range = range2f_shift(range, v2(size.x * -0.5, 0.0));
return range;
}
Vector2 range2f_size(Range2f range) {
Vector2 size = {0};
size = v2_sub(range.min, range.max);
size.x = fabsf(size.x);
size.y = fabsf(size.y);
return size;
}
bool range2f_contains(Range2f range, Vector2 v) {
return v.x >= range.min.x && v.x <= range.max.x && v.y >= range.min.y && v.y <= range.max.y;
}