fj_core/operations/build/
region.rs1use fj_math::{Point, Scalar};
2
3use crate::{
4 objects::{Cycle, Region},
5 operations::{build::BuildCycle, insert::Insert},
6 Core,
7};
8
9pub trait BuildRegion {
15 fn empty(core: &mut Core) -> Region {
17 let exterior = Cycle::empty().insert(core);
18 let interiors = [];
19
20 Region::new(exterior, interiors)
21 }
22
23 fn circle(
25 center: impl Into<Point<2>>,
26 radius: impl Into<Scalar>,
27 core: &mut Core,
28 ) -> Region {
29 let exterior = Cycle::circle(center, radius, core).insert(core);
30 Region::new(exterior, [])
31 }
32
33 fn polygon<P, Ps>(points: Ps, core: &mut Core) -> Region
35 where
36 P: Into<Point<2>>,
37 Ps: IntoIterator<Item = P>,
38 Ps::IntoIter: Clone + ExactSizeIterator,
39 {
40 let exterior = Cycle::polygon(points, core).insert(core);
41 Region::new(exterior, [])
42 }
43}
44
45impl BuildRegion for Region {}