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}