Find all entities within tolerance of a ray, sorted by distance.
- Parameters
-
| index | Published SpatialIndex3D to query. |
| ray | World-space ray. |
| tolerance | Maximum perpendicular distance from the ray axis. |
- Returns
- All hits sorted by ascending perpendicular distance. Empty if none.
Definition at line 148 of file HitTest.hpp.
152{
153 float tol_sq = tolerance * tolerance;
154 std::vector<HitResult> results;
155
156 for (const auto& [id, pos] : index.all()) {
157 float t = 0.0F;
159
160 if (t < 0.0F || d_sq > tol_sq) {
161 continue;
162 }
163
164 results.push_back(HitResult {
166 .distance = std::sqrt(d_sq),
167 .t = t });
168 }
169
170 std::ranges::sort(results, [](
const HitResult&
a,
const HitResult&
b) {
171 return a.distance <
b.distance;
172 });
173
174 return results;
175}
float point_ray_distance_sq(const Ray &ray, const glm::vec3 &point, float *out_t=nullptr)
Squared perpendicular distance from a point to an infinite ray.
References a, MayaFlux::Kinesis::SpatialIndex< PointT >::all(), b, MayaFlux::Kinesis::HitResult::id, id, and point_ray_distance_sq().