From cf4d0285daa50cdd6c41925b8e1bed7f85bc79c9 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Mon, 29 Aug 2022 21:39:43 +0100 Subject: Ray function to test if it passes close to a sequence of edges defined by nodes along the path --- lib/ray.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'lib/ray.cpp') diff --git a/lib/ray.cpp b/lib/ray.cpp index 1e30ae4..acbb807 100644 --- a/lib/ray.cpp +++ b/lib/ray.cpp @@ -1,4 +1,5 @@ #include "ray.hpp" +#include float Ray::distanceToLine(const glm::vec3 & p1, const glm::vec3 & e1) const @@ -16,3 +17,13 @@ Ray::distanceToLine(const glm::vec3 & p1, const glm::vec3 & e1) const } return glm::abs(glm::dot(n, p1 - p2)); } + +bool +Ray::passesCloseToEdges(const std::span positions, float distance) const +{ + return std::adjacent_find(positions.begin(), positions.end(), + [this, distance](const glm::vec3 & a, const glm::vec3 & b) { + return distanceToLine(a, b) <= distance; + }) + != positions.end(); +} -- cgit v1.2.3