mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-05-03 17:30:04 -05:00
Add a means of comparing AABBs and basic tests
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user