diff options
Diffstat (limited to 'core/aabb.cc')
| -rw-r--r-- | core/aabb.cc | 41 |
1 files changed, 19 insertions, 22 deletions
diff --git a/core/aabb.cc b/core/aabb.cc index 48070fe..3661143 100644 --- a/core/aabb.cc +++ b/core/aabb.cc @@ -1,60 +1,57 @@ #include "core/pch.hh" + #include "core/aabb.hh" -AABB::AABB(const glm::fvec3 &min, const glm::fvec3 &max) +AABB::AABB(const glm::fvec3& min, const glm::fvec3& max) { set_bounds(min, max); } -void AABB::set_bounds(const glm::fvec3 &min, const glm::fvec3 &max) +void AABB::set_bounds(const glm::fvec3& min, const glm::fvec3& max) { this->min = min; this->max = max; } -void AABB::set_offset(const glm::fvec3 &base, const glm::fvec3 &size) +void AABB::set_offset(const glm::fvec3& base, const glm::fvec3& size) { this->min = base; this->max = base + size; } -bool AABB::contains(const glm::fvec3 &point) const +bool AABB::contains(const glm::fvec3& point) const { - if((point.x < min.x) || (point.x > max.x)) - return false; - if((point.y < min.y) || (point.y > max.y)) - return false; - if((point.z < min.z) || (point.z > max.z)) - return false; - return true; + auto result = true; + result = result && (point.x >= min.x) && (point.x <= max.x); + result = result && (point.y >= min.y) && (point.y <= max.y); + result = result && (point.z >= min.z) && (point.z <= max.z); + return result; } -bool AABB::intersect(const AABB &other_box) const +bool AABB::intersect(const AABB& other_box) const { - if((min.x >= other_box.max.x) || (max.x <= other_box.min.x)) - return false; - if((min.y >= other_box.max.y) || (max.y <= other_box.min.y)) - return false; - if((min.z >= other_box.max.z) || (max.z <= other_box.min.z)) - return false; - return true; + auto result = true; + result = result && (min.x < other_box.max.x) && (max.x > other_box.min.x); + result = result && (min.y < other_box.max.y) && (max.y > other_box.min.y); + result = result && (min.z < other_box.max.z) && (max.z > other_box.min.z); + return result; } -AABB AABB::combine_with(const AABB &other_box) const +AABB AABB::combine_with(const AABB& other_box) const { AABB result; result.set_bounds(min, other_box.max); return result; } -AABB AABB::multiply_with(const AABB &other_box) const +AABB AABB::multiply_with(const AABB& other_box) const { AABB result; result.set_bounds(other_box.min, max); return result; } -AABB AABB::push(const glm::fvec3 &vector) const +AABB AABB::push(const glm::fvec3& vector) const { AABB result; result.set_bounds(min + vector, max + vector); |
