test/
test.rs

1extern crate beziercurve_wkt;
2
3use beziercurve_wkt::BezierCurve;
4use beziercurve_wkt::Intersection::*;
5
6const CURVE: &str = "BEZIERCURVE((0.0 1.0, 0.5 0.2, 1.0 0.0))";
7const LINE: &str = "BEZIERCURVE((0.0 0.0, 2.0 1.0))";
8
9fn main() {
10
11    let curve1 = BezierCurve::from_str(CURVE).unwrap().cache();
12    let curve2 = BezierCurve::from_str(LINE).unwrap().cache();
13    let intersections = curve1.get_intersections(&curve2);
14
15    for (_, i) in intersections {
16        match i {
17            LineLine(l)   => println!("line-line: ({:?})", l.get_intersection_point_1()),
18            LineQuad(l)   => println!("line-quad: ({:?})", l.get_intersection_point_1()),
19            LineCubic(l)  => println!("line-cubic: ({:?})", l.get_intersection_point_1()),
20            QuadLine(l)   => println!("quad-line: ({:?})", l.get_intersection_point_1()),
21            QuadQuad(l)   => println!("quad-quad: ({:?})", l.iter().map(|i| i.get_intersection_point_1()).collect::<Vec<_>>()),
22            QuadCubic(l)  => println!("quad-cubic: ({:?})", l.iter().map(|i| i.get_intersection_point_1()).collect::<Vec<_>>()),
23            CubicLine(c)  => println!("cubic-line: ({:?})", c.get_intersection_point_1()),
24            CubicQuad(c)  => println!("cubic-quad: ({:?})", c.iter().map(|i| i.get_intersection_point_1()).collect::<Vec<_>>()),
25            CubicCubic(c) => println!("cubic-cubic: {:?}", c.iter().map(|i| i.get_intersection_point_1()).collect::<Vec<_>>()),
26        }
27    }
28
29    let clipped = curve1.clip(&curve2);
30    for new_curve in clipped {
31        println!("{}", new_curve);
32        println!("{:#?}", new_curve.get_commands());
33        println!("----");
34    }
35}