68 return AABB{.
min = x, .max = x};
92 constexpr std::optional<AABB>
bounding_aabb_of(std::optional<AABB> x, std::optional<AABB> y)
111 template<std::ranges::input_range R,
class Proj = std::
identity>
112 requires std::convertible_to<typename std::projected<std::ranges::iterator_t<R>,
Proj>::value_type,
const Vector3&>
115 auto it = std::ranges::begin(r);
116 const auto last = std::ranges::end(r);
127 template<std::ranges::input_range R,
class Proj = std::
identity>
128 requires std::convertible_to<typename std::projected<std::ranges::iterator_t<R>,
Proj>::value_type,
const Vector3&>
131 if (std::ranges::begin(r) != std::ranges::end(r)) {
139 template<InputRangeWithSizeGreaterThan<0> R,
class Proj = std::
identity>
140 requires std::convertible_to<typename std::projected<std::ranges::iterator_t<R>,
Proj>::value_type,
const Vector3&>
147 template<std::ranges::input_range Range,
class Proj = std::
identity>
148 requires std::convertible_to<typename std::projected<std::ranges::iterator_t<Range>,
Proj>::value_type,
const AABB&>
151 auto it = std::ranges::begin(r);
152 auto const last = std::ranges::end(r);
167 template<std::ranges::input_range Range,
class Proj = std::
identity>
169 std::convertible_to<typename std::projected<std::ranges::iterator_t<Range>,
Proj>::value_type,
const std::optional<AABB>&>
170 and (not std::convertible_to<
typename std::projected<std::ranges::iterator_t<Range>,
Proj>::value_type,
const AABB&>)
173 auto it = std::ranges::begin(r);
174 const auto last = std::ranges::end(r);
177 std::optional<AABB>
rv;
constexpr AABB bounding_aabb_of_nonempty_range(R &&r, Proj proj={})
Definition aabb_functions.h:113
Definition custom_decoration_generator.h:5
constexpr bool has_zero_volume(const AABB &aabb)
Definition aabb_functions.h:51
constexpr Vector3 half_widths_of(const AABB &aabb)
Definition aabb_functions.h:32
constexpr Vector3 centroid_of(const AABB &aabb)
Definition aabb_functions.h:20
constexpr Vector3 dimensions_of(const AABB &aabb)
Definition aabb_functions.h:26
constexpr bool is_point(const AABB &aabb)
Definition aabb_functions.h:45
constexpr AABB bounding_aabb_of(const Vector3 &x)
Definition aabb_functions.h:66
AABB transform_aabb(const Matrix4x4 &m, const AABB &aabb)
std::optional< Rect > loosely_project_into_ndc(const AABB &aabb, const Matrix4x4 &view_mat, const Matrix4x4 &proj_mat, float znear, float zfar)
Vector< float, 3 > Vector3
Definition vector.h:644
constexpr U to(T &&value)
Definition conversion.h:56
constexpr Vector< T, N > elementwise_max(const Vector< T, N > &x, const Vector< T, N > &y)
Definition common_functions.h:125
constexpr Vector< T, N > elementwise_min(const Vector< T, N > &x, const Vector< T, N > &y)
Definition common_functions.h:111
and
Definition algorithms.h:158
std::array< Vector3, 8 > corner_vertices_of(const AABB &aabb)
constexpr float volume_of(const AABB &aabb)
Definition aabb_functions.h:38
Vector3 min
Definition aabb.h:18
Vector3 max
Definition aabb.h:19