Add a means of comparing AABBs and basic tests

This commit is contained in:
Erik Broberg
2016-06-07 12:32:30 -04:00
parent 1cd06aa3c8
commit 4ac7e5b533
3 changed files with 42 additions and 0 deletions
+16
View File
@@ -67,6 +67,14 @@ namespace openspace {
&& (min.y <= o.max.y) && (o.min.y <= max.y);
}
AABBSpatialRelation AABB2::relationTo(const AABB2& o) const {
if (intersects(o)) {
if (contains(o)) return AABBSpatialRelation::Containing;
if (o.contains(*this)) return AABBSpatialRelation::Contained;
return AABBSpatialRelation::Intersecting;
}
return AABBSpatialRelation::None;
}
@@ -109,6 +117,14 @@ namespace openspace {
&& (min.z <= o.max.z) && (o.min.z <= max.z);
}
AABBSpatialRelation AABB3::relationTo(const AABB3& o) const {
if (intersects(o)) {
if (contains(o)) return AABBSpatialRelation::Containing;
if (o.contains(*this)) return AABBSpatialRelation::Contained;
return AABBSpatialRelation::Intersecting;
}
return AABBSpatialRelation::None;
}
+10
View File
@@ -36,6 +36,13 @@ namespace openspace {
using namespace glm;
enum class AABBSpatialRelation {
None,
Intersecting,
Contained,
Containing
};
struct AABB2 {
AABB2();
@@ -47,6 +54,7 @@ namespace openspace {
bool contains(const vec2& p) const;
bool contains(const AABB2& o) const;
bool intersects(const AABB2& o) const;
AABBSpatialRelation relationTo(const AABB2& o) const;
vec2 min;
vec2 max;
@@ -63,6 +71,8 @@ namespace openspace {
bool contains(const vec3& p) const;
bool contains(const AABB3& o) const;
bool intersects(const AABB3& o) const;
AABBSpatialRelation relationTo(const AABB3& o) const;
vec3 min;
vec3 max;