diff --git a/src/kernel/shape/edges.rs b/src/kernel/shape/edges.rs index f50ea30b1..5ae4a5b3f 100644 --- a/src/kernel/shape/edges.rs +++ b/src/kernel/shape/edges.rs @@ -1,6 +1,9 @@ -use crate::kernel::{ - geometry::{Curve, Line}, - topology::{edges::Edge, vertices::Vertex}, +use crate::{ + kernel::{ + geometry::{Curve, Line, Circle}, + topology::{edges::Edge, vertices::Vertex}, + }, + math::{Scalar, Vector, Point}, }; use super::handle::{Handle, Storage}; @@ -27,6 +30,20 @@ impl Edges { Storage::new(edge).handle() } + /// Add a circle to the shape + /// + /// Calls [`Edges::add`] internally, and is subject to the same + /// restrictions. + pub fn add_circle(&mut self, radius: Scalar) -> Handle { + self.add(Edge { + curve: Curve::Circle(Circle { + center: Point::origin(), + radius: Vector::from([radius, Scalar::ZERO]), + }), + vertices: None, + }) + } + /// Add a line segment to the shape /// /// Calls [`Edges::add`] internally, and is subject to the same diff --git a/src/kernel/shapes/circle.rs b/src/kernel/shapes/circle.rs index 11f1d7283..5ce6c3441 100644 --- a/src/kernel/shapes/circle.rs +++ b/src/kernel/shapes/circle.rs @@ -3,10 +3,7 @@ use crate::{ kernel::{ geometry::Surface, shape::Shape, - topology::{ - edges::{Cycle, Edge}, - faces::Face, - }, + topology::{edges::Cycle, faces::Face}, }, math::{Aabb, Point, Scalar}, }; @@ -20,9 +17,7 @@ impl ToShape for fj::Circle { // Circles have just a single round edge with no vertices. So none need // to be added here. - let edge = shape - .edges() - .add(Edge::circle(Scalar::from_f64(self.radius))); + let edge = shape.edges().add_circle(Scalar::from_f64(self.radius)); shape.cycles().add(Cycle { edges: vec![edge] }); let cycles = shape.cycles().all().collect(); diff --git a/src/kernel/topology/edges.rs b/src/kernel/topology/edges.rs index 6c1a87486..550fc7a4a 100644 --- a/src/kernel/topology/edges.rs +++ b/src/kernel/topology/edges.rs @@ -1,10 +1,4 @@ -use crate::{ - kernel::{ - geometry::{Circle, Curve}, - shape::handle::Handle, - }, - math::{Point, Scalar, Vector}, -}; +use crate::kernel::{geometry::Curve, shape::handle::Handle}; use super::vertices::Vertex; @@ -44,16 +38,3 @@ pub struct Edge { /// and store 1D vertices again, at some point. pub vertices: Option<[Handle; 2]>, } - -impl Edge { - /// Create a circle - pub fn circle(radius: Scalar) -> Self { - Edge { - curve: Curve::Circle(Circle { - center: Point::origin(), - radius: Vector::from([radius, Scalar::ZERO]), - }), - vertices: None, - } - } -}