From f41e383e6f26ad7aaa1b758e1cf262b064056191 Mon Sep 17 00:00:00 2001 From: DEV_X3N0 Date: Tue, 17 Mar 2026 19:18:06 +0000 Subject: [PATCH] Change traversal to keep exact zero distance hits --- lib/src/bvh.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/src/bvh.rs b/lib/src/bvh.rs index 14a0ec9..2f24212 100644 --- a/lib/src/bvh.rs +++ b/lib/src/bvh.rs @@ -119,7 +119,8 @@ impl Bvh{ let clamped_point=start_point.min(aabb.max()).max(aabb.min()); Some((start_point-clamped_point).length_squared()) }; - let (_,event_slice)=self.bvh.traverse(start_point,Fixed::ZERO,Fixed::MAX,intersect_leaf,intersect_aabb)?; + // traverse uses strict `start_time < t`, so use NEG_EPSILON to keep exact-zero-distance hits. + let (_,event_slice)=self.bvh.traverse(start_point,Fixed::NEG_EPSILON,Fixed::MAX,intersect_leaf,intersect_aabb)?; // find time at the closest point let (best_time,mut best_distance)=output_events[event_slice.slice.start..event_slice.slice.end].iter().map(|event|{ -- 2.49.1