use std::time::Instant;
use togo::prelude::*;
fn main() {
println!("\n========================================");
println!("Self-Intersection Check Example");
println!("========================================\n");
let poly = togo::poly::data::arcline1000();
println!("Spiral polyline: {} arcs", poly.len());
println!("Total arc pairs to check: {}", poly.len() * (poly.len() - 1) / 2);
let _ = arcline_has_self_intersection(&poly);
let start = Instant::now();
let mut has_intersection = true;
for _ in 0..1000 {
has_intersection = arcline_has_self_intersection(&poly);
}
let elapsed = start.elapsed();
assert!(!has_intersection, "poly1000 must have no self-intersections");
println!("\nResult: {} (no self-intersections verified)", if has_intersection { "INTERSECTS" } else { "CLEAN" });
println!("Time: {:.4} ms ({:.0} µs)\n",
elapsed.as_secs_f64() * 1000.0 / 1000.0,
elapsed.as_secs_f64() * 1_000_000.0 / 1000.0);
println!("========================================");
}