MayaFlux 1.0.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 373 of file Bounds.hpp.

374{
375 std::vector<std::pair<glm::vec3, float>> ps(planes.begin(), planes.end());
376 return [ps = std::move(ps)](const glm::vec3& p) {
377 return std::ranges::all_of(
378 ps,
379 [&p](const auto& plane) {
380 const auto& [n, d] = plane;
381 return glm::dot(n, p) >= d;
382 });
383 };
384}