pub trait CycleBuilder {
    fn add_half_edge(&mut self) -> Partial<HalfEdge>;
    fn add_half_edge_from_point_to_start(
        &mut self,
        point: impl Into<Point<2>>
    ) -> Partial<HalfEdge>; fn update_as_polygon_from_points(
        &mut self,
        points: impl IntoIterator<Item = impl Into<Point<2>>>
    ) -> Vec<Partial<HalfEdge>>; fn update_as_polygon(&mut self); fn update_as_triangle_from_global_points(
        &mut self,
        points: [impl Into<Point<3>>; 3]
    ) -> [Partial<HalfEdge>; 3]; }
Expand description

Builder API for PartialCycle

Required Methods§

Add a new half-edge to the cycle

Creates a half-edge and adds it to the cycle. The new half-edge is connected to the front vertex of the last half-edge , and the back vertex of the first edge, making sure the half-edges actually form a cycle.

If this is the first half-edge being added, it is connected to itself, meaning its front and back vertices are the same.

Add a new half-edge that starts at the provided point

Opens the cycle between the last and first edge, updates the last edge to go the provided point, and adds a new half-edge from the provided point the the first edge.

If the cycle doesn’t have any edges yet, the new edge connects to itself, starting and ending at the provided point.

Update cycle as a polygon from the provided points

Update cycle as a polygon

Will update each half-edge in the cycle to be a line segment.

Update cycle as a triangle, from global (3D) points

Uses the three points to infer a plane that is used as the surface.

Implementation Note

This method is probably just temporary, and will be generalized into a “update as polygon from global points” method sooner or later. For now, I didn’t want to deal with the question of how to infer the surface, and how to handle points that don’t fit that surface.

Implementors§