diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ray.cpp | 11 | ||||
-rw-r--r-- | lib/ray.hpp | 2 |
2 files changed, 13 insertions, 0 deletions
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 <algorithm> 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<const glm::vec3> 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(); +} diff --git a/lib/ray.hpp b/lib/ray.hpp index bce4a30..8bef1c8 100644 --- a/lib/ray.hpp +++ b/lib/ray.hpp @@ -1,6 +1,7 @@ #pragma once #include <glm/glm.hpp> +#include <span> class Ray { public: @@ -10,4 +11,5 @@ public: glm::vec3 direction; float distanceToLine(const glm::vec3 & a, const glm::vec3 & b) const; + bool passesCloseToEdges(const std::span<const glm::vec3> positions, float distance) const; }; |