offroad 0.5.7

2D offsetting for arc polylines/polygons.
Documentation
use togo::{poly::arcline200, prelude::*};
use offroad::{offset::offset_arcline_to_arcline, prelude::OffsetCfg};

fn main() {
    let mut cfg = OffsetCfg::default();
    let mut svg = SVG::new(600.0, 600.0, Some("/tmp/debug_multi200.svg"));
    cfg.svg = Some(&mut svg);
    cfg.svg_orig = true;
    cfg.svg_final = true;

    let poly_orig = arcline200();
    println!("Original arcline200 has {} arcs", poly_orig.len());

    let mut total_offsets = vec![];
    
    for i in 1..5 {
        println!("\n=== Offset iteration i={} ===", i);
        let offset_distance = i as f64;
        println!("Calling offset_arcline_to_arcline with offset={}", offset_distance);
        
        let offset = offset_arcline_to_arcline(&poly_orig, offset_distance, &mut cfg);
        println!("Got {} offset arclines for offset {}", offset.len(), offset_distance);
        
        for (idx, arcline) in offset.iter().enumerate() {
            println!("  Arcline {}: {} arcs", idx, arcline.len());
        }
        
        total_offsets.extend(offset);
    }

    println!("\n=== FINAL RESULTS ===");
    println!("Total arclines: {}", total_offsets.len());
    
    if let Some(svg) = cfg.svg.as_mut() {
        svg.write_stroke_width(0.1);
    }
    
    println!("\nExpected: 228 total arclines");
    println!("Got: {} total arclines", total_offsets.len());
}