Add operator

This commit is contained in:
Georg Hagen
2025-01-04 00:53:17 +01:00
parent 0e21159888
commit d9763768e8

View File

@@ -14,12 +14,12 @@ namespace OpenVulkano::Math
/**
* \brief A class that represents an axis aligned bounding box
*/
class AABB final : public Range<Math::Vector3f>
class AABB final : public Range<Vector3f>
{
public:
AABB() : Range(Math::Vector3f(INFINITY), Math::Vector3f(-INFINITY)) {}
AABB() : Range(Vector3f(INFINITY), Vector3f(-INFINITY)) {}
AABB(const Math::Vector3f& min, const Math::Vector3f& max) : Range(min, max) {}
AABB(const Vector3f& min, const Vector3f& max) : Range(min, max) {}
AABB(const Vector3f& point) : Range(point, point)
{}
@@ -31,18 +31,18 @@ namespace OpenVulkano::Math
* \brief Initiates the AABB to a single point (min=max=point)
* \param point The point that should be used as min and max of the AABB
*/
void Init(const Math::Vector3f& point)
void Init(const Vector3f& point)
{
min = max = point;
}
void Init(const Math::Vector3f& min, const Math::Vector3f& max)
void Init(const Vector3f& min, const Vector3f& max)
{
this->min = min;
this->max = max;
}
void Init(const Math::Vector3f& point, float radius)
void Init(const Vector3f& point, float radius)
{
min = point - radius;
max = point + radius;
@@ -58,7 +58,7 @@ namespace OpenVulkano::Math
max = other.GetMax();
}
void Grow(const Math::Vector3f& point)
void Grow(const Vector3f& point)
{
min = Math::Utils::min(min, point);
max = Math::Utils::max(max, point);
@@ -75,12 +75,12 @@ namespace OpenVulkano::Math
//TODO
}
[[nodiscard]] Math::Vector3f GetDiagonal() const
[[nodiscard]] Vector3f GetDiagonal() const
{
return GetSize();
}
[[nodiscard]] Math::Vector3f GetCenter() const
[[nodiscard]] Vector3f GetCenter() const
{
return min + (GetDiagonal() * 0.5f);
}
@@ -96,7 +96,7 @@ namespace OpenVulkano::Math
other.max.y < min.y || other.min.z > max.z || other.max.z < min.z);
}
[[nodiscard]] bool InBounds(const Math::Vector3f& position) const
[[nodiscard]] bool InBounds(const Vector3f& position) const
{
return Math::Utils::all(Math::Utils::lessThanEqual(min, position)) && Math::Utils::all(Math::Utils::lessThanEqual(position, max));
}
@@ -116,8 +116,10 @@ namespace OpenVulkano::Math
*/
void Reset()
{
min = Math::Vector3f(INFINITY);
max = Math::Vector3f(-INFINITY);
min = Vector3f(INFINITY);
max = Vector3f(-INFINITY);
}
AABB& operator +=(const AABB& other) { Grow(other); return *this; }
};
}