offroad 0.0.1-alpha

2D offsetting for arc polylines.
Documentation

mod arc_string;

mod arc;
pub use crate::arc::Arc;


mod circle;
pub use crate::circle::Circle;

mod dist_arc_arc;
mod dist_line_circle;
mod dist_point_arc;
mod dist_point_circle;
mod dist_point_segment;
mod dist_segment_arc;
mod dist_segment_circle;
mod dist_segment_segment;

mod int_arc_arc;
mod int_circle_circle;
mod int_interval_interval;
mod int_line_arc;
mod int_line_circle;
mod int_line_line;

mod int_segment_point;
mod int_segment_arc;
mod int_segment_circle;
mod int_segment_segment;
mod intersect;

mod interval;
mod line;

mod offset;
pub use crate::offset::pline_01;

mod offset_connect_raw;
pub use crate::offset_connect_raw::offset_connect_raw;

mod offset_polyline_raw;
pub use crate::offset_polyline_raw::OffsetRaw;
pub use crate::offset_polyline_raw::offset_polyline_raw;
pub use crate::offset_polyline_raw::offsetraw;

mod offset_split_arcs;
pub use crate::offset_split_arcs::offset_split_arcs;


mod offset_prune_invalid_offsets;

mod point;
pub use crate::point::Point;

mod pvertex;
pub use crate::pvertex::PVertex;
pub use crate::pvertex::Polyline;

mod segment;

mod svg;
mod utils;

#[cfg(test)]
mod tests;


#[macro_export]
macro_rules! expect_float_absolute_eq {
    
    ($a:expr, $b:expr, $epsilon:expr) => {{
        let (a, b, eps) = ($a, $b, $epsilon);
        let r = $crate::afe_is_absolute_eq!(a, b, eps);
        let e = $crate::AbsoluteEqError::new(a, b, eps);
        $crate::bool_to_result(r, e)
    }};
    
    ($a:expr, $b:expr) => {
        $crate::expect_float_absolute_eq!($a, $b, 1.0e-6)
    };
}