Skip to content

Commit 675fab0

Browse files
committed
some checks on self interctin
1 parent 82cfac9 commit 675fab0

File tree

3 files changed

+8
-1
lines changed

3 files changed

+8
-1
lines changed

geo/src/algorithm/relate/geomgraph/geometry_graph.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ where
6161
(self.tree.as_ref().unwrap(), edges)
6262
}
6363

64-
fn update_tree(&mut self) {
64+
pub(crate) fn update_tree(&mut self) {
6565
if self.tree.is_none() {
6666
self.tree = Some(self.build_tree());
6767
}

geo/src/algorithm/relate/geomgraph/index/prepared_geometry.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ mod conversions {
158158
impl<'a, F: GeoFloat> From<GeometryCow<'a, F>> for PreparedGeometry<'a, F> {
159159
fn from(geometry: GeometryCow<'a, F>) -> Self {
160160
let mut geometry_graph = GeometryGraph::new(0, geometry);
161+
geometry_graph.update_tree(); // TODO: maybe unecessary
161162

162163
// TODO: don't pass in line intersector here - in theory we'll want pluggable line intersectors
163164
// and the type (Robust) shouldn't be hard coded here.

geo/src/algorithm/relate/geomgraph/index/simple_edge_set_intersector.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,11 @@ impl<F: GeoFloat> EdgeSetIntersector<F> for SimpleEdgeSetIntersector {
5050
segment_intersector: &mut SegmentIntersector<F>,
5151
) {
5252
let edges = graph.edges_mut();
53+
let mut checks = 0;
5354
for i in 0..edges.len() {
5455
let (e0, e1) = edges.split_at_mut(i + 1);
5556
let (e0, edge0) = e0.split_at_mut(i);
57+
assert_eq!(edge0.len(), 1);
5658
let edge0 = &mut edge0[0];
5759

5860
if check_for_self_intersecting_edges {
@@ -61,8 +63,12 @@ impl<F: GeoFloat> EdgeSetIntersector<F> for SimpleEdgeSetIntersector {
6163

6264
for edge1 in e0.iter_mut().chain(e1) {
6365
self.compute_intersects(edge0, edge1, segment_intersector);
66+
checks += 1;
6467
}
6568
}
69+
70+
println!("checks: {}", checks);
71+
assert_eq!(checks, edges.len()*edges.len());
6672
}
6773

6874
fn compute_intersections_between_sets<'a>(

0 commit comments

Comments
 (0)