MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ convex_region()

std::function< bool(glm::vec3)> MayaFlux::Kinesis::convex_region ( std::span< const std::pair< glm::vec3, float > >  planes)
inline

Containment test for a convex volume defined by inward-facing half-planes.

A point is inside if it satisfies all half-planes: dot(normal, p) >= offset for every plane. Normals must point inward. Suitable for authored rooms, corridors, and any convex spatial zone. Non-convex volumes are composed via union_region3 / subtract_region3.

Parameters
planesPairs of (inward normal, signed offset). Copied into closure.

Definition at line 328 of file Bounds.hpp.

329{
330 std::vector<std::pair<glm::vec3, float>> ps(planes.begin(), planes.end());
331 return [ps = std::move(ps)](const glm::vec3& p) {
332 return std::ranges::all_of(
333 ps,
334 [&p](const auto& plane) {
335 const auto& [n, d] = plane;
336 return glm::dot(n, p) >= d;
337 });
338 };
339}