From bed86118debf3a8d201916f260e83dea5da6d6a0 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Fri, 28 Jun 2024 18:55:32 +0200 Subject: [PATCH] Read vertex geometry in bounding box calculation --- .../src/algorithms/bounding_volume/half_edge.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/crates/fj-core/src/algorithms/bounding_volume/half_edge.rs b/crates/fj-core/src/algorithms/bounding_volume/half_edge.rs index 0062404c3..ba8ee4408 100644 --- a/crates/fj-core/src/algorithms/bounding_volume/half_edge.rs +++ b/crates/fj-core/src/algorithms/bounding_volume/half_edge.rs @@ -10,9 +10,8 @@ impl super::BoundingVolume<2> for (&Handle, &Handle, &Handle) { fn aabb(self, geometry: &Geometry) -> Option> { - let (half_edge, _end_vertex, surface) = self; + let (half_edge, end_vertex, surface) = self; - let half_edge_geom = geometry.of_half_edge(half_edge); let path = geometry .of_curve(half_edge.curve()) .unwrap() @@ -34,9 +33,17 @@ impl super::BoundingVolume<2> }) } SurfacePath::Line(_) => { - let points = half_edge_geom.boundary.inner.map(|point_curve| { - path.point_from_path_coords(point_curve) - }); + let points = + [half_edge.start_vertex(), end_vertex].map(|vertex| { + let point_curve = geometry + .of_vertex(vertex) + .unwrap() + .local_on(half_edge.curve()) + .unwrap() + .position; + + path.point_from_path_coords(point_curve) + }); Some(Aabb::<2>::from_points(points)) }