cavalier_contours 0.1.0

2D polyline/shape library for offsetting, combining, etc.
Documentation
#[macro_export]
macro_rules! assert_fuzzy_eq {
    ($left:expr, $right:expr) => {{
        match (&$left, &$right) {
            (left_val, right_val) => {
                if !(left_val.fuzzy_eq(*right_val)) {
                    panic!(
                        r#"assertion failed: `left.fuzzy_eq(right)`
  left: `{:?}`,
 right: `{:?}`"#,
                        &*left_val, &*right_val
                    )
                }
            }
        }
    }};
    ($left:expr, $right:expr, $eps:expr) => {{
        match (&$left, &$right, &$eps) {
            (left_val, right_val, eps_val) => {
                if !(left_val.fuzzy_eq_eps(*right_val, *eps_val)) {
                    panic!(
                        r#"assertion failed: `left.fuzzy_eq_eps(right, eps)`
  left: `{:?}`,
 right: `{:?}`
 eps: `{:?}`"#,
                        &*left_val, &*right_val, &*eps_val
                    )
                }
            }
        }
    }};
}

#[macro_export]
macro_rules! pline_open {
    ( $( $x:expr ),* ) => {
        {
            let mut pl = Polyline::new();
            $(
                pl.add($x.0, $x.1, $x.2);
            )*
            pl
        }
    };
}

#[macro_export]
macro_rules! pline_closed {
    ( $( $x:expr ),* ) => {
        {
            let mut pl = Polyline::new_closed();
            $(
                pl.add($x.0, $x.1, $x.2);
            )*
            pl
        }
    };
}