pub struct BezierArrangementGraph2 { /* private fields */ }Expand description
Branch-free retained Bezier arrangement graph.
Implementations§
Source§impl BezierArrangementGraph2
impl BezierArrangementGraph2
Sourcepub fn from_split_materializations(
materializations: &[BezierSplitMaterialization2],
) -> CurveResult<Self>
pub fn from_split_materializations( materializations: &[BezierSplitMaterialization2], ) -> CurveResult<Self>
Constructs a retained graph from split materializations in source order.
Sourcepub fn new(fragments: Vec<BezierArrangementFragment2>) -> CurveResult<Self>
pub fn new(fragments: Vec<BezierArrangementFragment2>) -> CurveResult<Self>
Constructs a graph from already-retained fragments.
Sourcepub fn fragments(&self) -> &[BezierArrangementFragment2]
pub fn fragments(&self) -> &[BezierArrangementFragment2]
Returns retained fragments.
Sourcepub fn traverse_branch_free(
&self,
policy: &CurvePolicy,
) -> Classification<BezierArrangementTraversal2>
pub fn traverse_branch_free( &self, policy: &CurvePolicy, ) -> Classification<BezierArrangementTraversal2>
Traverses branch-free materialized fragments into endpoint-connected chains.
Sourcepub fn traverse_with_tangent_order(
&self,
policy: &CurvePolicy,
) -> Classification<BezierArrangementTraversal2>
pub fn traverse_with_tangent_order( &self, policy: &CurvePolicy, ) -> Classification<BezierArrangementTraversal2>
Traverses materialized fragments and resolves simple branches by tangent order.
At a branch vertex, the outgoing fragment with the smallest certified counter-clockwise turn from the incoming endpoint tangent is selected. The comparison is exact: it uses signs of cross and dot products, not finite angles. This is the local-order step needed before full higher-order arrangement traversal can emit regions. Ties, zero tangents, unresolved split boundaries, and uncertain signs remain explicit uncertainty in Yap’s sense.
Sourcepub fn traverse_retained_with_tangent_order(
&self,
policy: &CurvePolicy,
) -> Classification<BezierArrangementTraversal2>
pub fn traverse_retained_with_tangent_order( &self, policy: &CurvePolicy, ) -> Classification<BezierArrangementTraversal2>
Traverses retained fragments using native and algebraic endpoint evidence.
This is the first traversal consumer for
BezierSplitFragment2::AlgebraicEndpointImages. It connects endpoints
only when the retained point evidence is exact and structurally equal
(or when a represented coordinate has an exact rational witness matching
a native point). At a branch vertex it compares outgoing tangents with
either the native exact cross/dot predicate or
compare_algebraic_tangent_turn_from_base.
The method deliberately does not materialize concrete Bezier regions from algebraic fragments. It only proves traversal order over retained evidence, preserving Yap’s construction/decision boundary from “Towards Exact Geometric Computation,” Computational Geometry 7(1-2), 3-23 (1997), and matching the arrangement local-order discipline in de Berg et al., Computational Geometry (3rd ed., 2008).
Source§impl BezierArrangementGraph2
impl BezierArrangementGraph2
Sourcepub fn traverse_retained_deduplicating_materialized_overlaps(
&self,
policy: &CurvePolicy,
) -> Classification<BezierRetainedOverlapTraversal2>
pub fn traverse_retained_deduplicating_materialized_overlaps( &self, policy: &CurvePolicy, ) -> Classification<BezierRetainedOverlapTraversal2>
Traverses retained fragments after deduplicating exact duplicate overlaps.
This is the first overlap-consuming traversal stage. It accepts only overlaps whose fragment images and oriented endpoints are certified equal, shadows the duplicate fragment, and then replays retained tangent traversal on the remaining graph. Partial line overlaps and reversed same-image overlaps are still boundary uncertainty because consuming them requires ownership and splitting rules not represented by this slice.
Sourcepub fn split_retained_linear_overlaps(
&self,
policy: &CurvePolicy,
) -> Classification<BezierRetainedLinearOverlapSplitGraph2>
pub fn split_retained_linear_overlaps( &self, policy: &CurvePolicy, ) -> Classification<BezierRetainedLinearOverlapSplitGraph2>
Splits retained materialized fragments at certified linear-overlap endpoints.
The method is deliberately narrower than a full overlap walker: it
requires all line-image overlaps in the report to have exact Bezier
parameter ranges from BezierRetainedOverlapReport2::linear_bezier_overlap_splits.
It then inserts the range endpoints into the affected fragments and
materializes exact subcurves with de Casteljau subdivision. Same-image
duplicate overlaps are reported but do not add boundaries; nonlinear
line images, unresolved endpoint carriers, or uncertain ordering remain
explicit uncertainty.
Sourcepub fn traverse_retained_splitting_linear_overlaps(
&self,
policy: &CurvePolicy,
) -> Classification<BezierRetainedLinearOverlapTraversal2>
pub fn traverse_retained_splitting_linear_overlaps( &self, policy: &CurvePolicy, ) -> Classification<BezierRetainedLinearOverlapTraversal2>
Traverses after resolving certified linearly-parameterized overlaps.
This method handles the conservative case where overlap endpoints split
the graph into ordinary subfragments. Same-oriented overlap spans shadow
one duplicate copy; opposite-oriented spans cancel both copies because
they represent the same positive-dimensional boundary traversed in
opposite directions. The cancellation is applied only to
BezierRetainedResolvedLinearOverlap2 records produced by exact
refinement, preserving Yap’s object/predicate separation and the
overlap-degeneracy discipline of Foster, Hormann, and Popa (2019).
Nonlinear line images, algebraic endpoint-image fragments without native
subcurves, and remaining branch ambiguities still return explicit
uncertainty.
Trait Implementations§
Source§impl Clone for BezierArrangementGraph2
impl Clone for BezierArrangementGraph2
Source§fn clone(&self) -> BezierArrangementGraph2
fn clone(&self) -> BezierArrangementGraph2
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for BezierArrangementGraph2
impl Debug for BezierArrangementGraph2
Source§impl Default for BezierArrangementGraph2
impl Default for BezierArrangementGraph2
Source§fn default() -> BezierArrangementGraph2
fn default() -> BezierArrangementGraph2
Source§impl PartialEq for BezierArrangementGraph2
impl PartialEq for BezierArrangementGraph2
Source§fn eq(&self, other: &BezierArrangementGraph2) -> bool
fn eq(&self, other: &BezierArrangementGraph2) -> bool
self and other values to be equal, and is used by ==.