summaryrefslogtreecommitdiff
path: root/gfx
diff options
context:
space:
mode:
Diffstat (limited to 'gfx')
-rw-r--r--gfx/aabb.cpp15
-rw-r--r--gfx/aabb.h16
2 files changed, 14 insertions, 17 deletions
diff --git a/gfx/aabb.cpp b/gfx/aabb.cpp
index 0a04ef4..19c2217 100644
--- a/gfx/aabb.cpp
+++ b/gfx/aabb.cpp
@@ -1,19 +1,4 @@
#include "aabb.h"
-#include <algorithm>
-#include <tuple>
-
-AxisAlignedBoundingBox
-AxisAlignedBoundingBox::fromPoints(const std::span<const GlobalPosition3D> points)
-{
- using Limits = std::numeric_limits<GlobalDistance>;
- static constexpr const auto INITIAL
- = std::make_pair(GlobalPosition3D {Limits::max()}, GlobalPosition3D {Limits::min()});
- return std::make_from_tuple<AxisAlignedBoundingBox>(
- std::ranges::fold_left(points, INITIAL, [](const auto & prev, const auto & point) {
- auto & [min, max] = prev;
- return std::make_pair(glm::min(min, point), glm::max(max, point));
- }));
-}
AxisAlignedBoundingBox &
AxisAlignedBoundingBox::operator+=(const GlobalPosition3D & point)
diff --git a/gfx/aabb.h b/gfx/aabb.h
index db3a215..229d516 100644
--- a/gfx/aabb.h
+++ b/gfx/aabb.h
@@ -1,7 +1,8 @@
#pragma once
#include "config/types.h"
-#include <span>
+#include <algorithm>
+#include <tuple>
class AxisAlignedBoundingBox {
public:
@@ -13,7 +14,18 @@ public:
AxisAlignedBoundingBox operator-(const GlobalPosition3D & viewPoint) const;
- [[nodiscard]] static AxisAlignedBoundingBox fromPoints(std::span<const GlobalPosition3D> points);
+ [[nodiscard]] static AxisAlignedBoundingBox
+ fromPoints(auto && points)
+ {
+ using Limits = std::numeric_limits<GlobalDistance>;
+ static constexpr const auto INITIAL
+ = std::make_pair(GlobalPosition3D {Limits::max()}, GlobalPosition3D {Limits::min()});
+ return std::make_from_tuple<AxisAlignedBoundingBox>(
+ std::ranges::fold_left(points, INITIAL, [](const auto & prev, const auto & point) {
+ auto & [min, max] = prev;
+ return std::make_pair(glm::min(min, point), glm::max(max, point));
+ }));
+ }
GlobalPosition3D min, max;
};