From f0811a9b6eab1ec84679eecb43beaeaf06dcfaa8 Mon Sep 17 00:00:00 2001 From: indierusty Date: Mon, 4 Aug 2025 11:41:01 +0530 Subject: [PATCH] fix self intersection --- node-graph/gcore/src/vector/algorithms/intersection.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/node-graph/gcore/src/vector/algorithms/intersection.rs b/node-graph/gcore/src/vector/algorithms/intersection.rs index 5196e0a499..f9718efc2a 100644 --- a/node-graph/gcore/src/vector/algorithms/intersection.rs +++ b/node-graph/gcore/src/vector/algorithms/intersection.rs @@ -53,7 +53,7 @@ pub fn subsegment_intersections(segment1: PathSeg, min_t1: f64, max_t1: f64, seg (segment1, PathSeg::Line(line)) => segment1.intersect_line(line).iter().map(|i| (i.segment_t, i.line_t)).collect(), (segment1, segment2) => { let mut intersections = Vec::new(); - segment_intersections_inner(segment1, min_t2, min_t2, segment2, min_t1, min_t2, accuracy, &mut intersections); + segment_intersections_inner(segment1, min_t1, max_t1, segment2, min_t2, max_t2, accuracy, &mut intersections); intersections } } @@ -225,6 +225,7 @@ pub fn bezpath_all_self_intersections(mut bezpath: BezPath, error: Option, bezpath.segments().enumerate().for_each(|(i, other)| { let other_self_intersection = pathseg_self_intersections(other, error, minimum_separation); intersections_vec.extend(other_self_intersection.iter().flat_map(|value| [(i, value.0), (i, value.1)])); + bezpath.segments().enumerate().skip(i + 1).for_each(|(j, curve)| { let all_segment_intersections = filtered_all_segment_intersections(curve, other, error, minimum_separation); intersections_vec.extend(