Struct ExactIntersectionCurve
#[non_exhaustive]pub struct ExactIntersectionCurve {
pub branches: Vec<Curve3>,
pub derivation: Derivation,
pub spans: Vec<Option<Interval>>,
}Expand description
The exact intersection curve of two elementary surfaces, when one exists in closed form.
Returns the curve together with the identity used to derive it, so a caller can record provenance rather than re-deriving trust.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.branches: Vec<Curve3>The branches of the intersection, in deterministic order.
Usually one, but several elementary pairs genuinely meet in TWO disjoint components: equal-radius cylinders on intersecting axes cut two ellipses, and parallel cylinders cut two lines. Returning a single curve would have forced this code to pick one and discard the other, which is exactly the silent geometry loss the rest of this module refuses to do. Exact: every coordinate comes from the operands’ own numbers through the stated identity, never from a fit.
derivation: DerivationWhich closed-form identity produced branches.
spans: Vec<Option<Interval>>The parameter span each branch exists on, aligned with branches:
None for a curve defined on its whole natural domain (a line, a
full circle or ellipse), Some for a piece of a ruled section
(ADR 0076), which exists only where its discriminant is not
negative. Two pieces over one span join at both ends into a loop.
Implementations§
Trait Implementations§
§impl Clone for ExactIntersectionCurve
impl Clone for ExactIntersectionCurve
§fn clone(&self) -> ExactIntersectionCurve
fn clone(&self) -> ExactIntersectionCurve
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for ExactIntersectionCurve
impl Debug for ExactIntersectionCurve
§impl PartialEq for ExactIntersectionCurve
impl PartialEq for ExactIntersectionCurve
impl StructuralPartialEq for ExactIntersectionCurve
Auto Trait Implementations§
impl Freeze for ExactIntersectionCurve
impl RefUnwindSafe for ExactIntersectionCurve
impl Send for ExactIntersectionCurve
impl Sync for ExactIntersectionCurve
impl Unpin for ExactIntersectionCurve
impl UnwindSafe for ExactIntersectionCurve
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more