use polygon_offsetting::draw_svg::draw_svg_offset;
use polygon_offsetting::Polygon;
use polygon_offsetting::Offset;
fn example_offsetting() -> Result <(), Box<dyn std::error::Error>> {
let points: Vec<(f64, f64)> = vec![
(0., 0.),
(100., 0.),
(40., 20.),
(100., 20.),
(100., 60.),
(95., 78.),
(55., 40.),
(0., 60.),
(0.0, 0.0)
];
let offset_size: f64 = 12.25;
let tolerance: f64 = 0.1;
let mut polygon = Polygon::new(&points, offset_size).map_err(|e| { e })?;
let offset: Offset = polygon.offsetting(tolerance).map_err(|e| { e })?;
println!("Initial contour length: {:?}", points.len());
println!("Offset contour length: {:?}", offset.contour.len());
println!("offset area: {:?}", offset.area);
println!("offset perimeter: {:?}", offset.perimeter);
draw_svg_offset(
&points,
&mut offset.clone(),
"/examples/svg/".to_string(),
"example_offsetting".to_string(),
).map_err(|e| {
print!("Error on creating offset svg: {:?}", e);
e
})?;
Ok(())
}
fn main() {
match example_offsetting() {
Ok(_offset_polygon) => { println!("Offset Polygon computed"); },
Err(e) => { println!("Error Offsetting: {:?}", e); }
}
}