pub enum GordonRefusal {
Show 14 variants
TooFewCurves {
family: char,
count: usize,
},
InvalidBand {
band: f64,
},
DegenerateCurve {
family: char,
curve: usize,
extent: f64,
band: f64,
},
ClosedCurve {
family: char,
curve: usize,
gap: f64,
band: f64,
},
CurvesDoNotMeet {
u_curve: usize,
v_curve: usize,
gap: f64,
band: f64,
},
MultipleCrossings {
u_curve: usize,
v_curve: usize,
crossings: Vec<(f64, f64)>,
band: f64,
},
CrossingOrder {
family: char,
curve: usize,
parameters: Vec<f64>,
},
CoincidentCrossings {
family: char,
first: usize,
second: usize,
separation: f64,
},
Overhang {
family: char,
curve: usize,
end: usize,
parameter: f64,
gap: f64,
band: f64,
},
InconsistentCrossing {
u_curve: usize,
v_curve: usize,
gap: f64,
band: f64,
u_parameter_offset: f64,
v_parameter_offset: f64,
},
WeightClosure {
u_curve: usize,
v_curve: usize,
ratio: f64,
band: f64,
},
NonPositiveWeight {
row: usize,
column: usize,
weight: f64,
},
Incompatible {
family: char,
detail: String,
},
Geometry(String),
}Expand description
A Gordon constructor’s refusal, with the measurement that caused it.
family is 'u' for the u_curves argument and 'v' for v_curves;
curve indices are the CALLER’s indices into those slices.
Variants§
TooFewCurves
A family needs at least two curves: its two boundaries.
InvalidBand
A caller-stated crossing band that is not a positive finite distance.
DegenerateCurve
The curve has no extent: it is a point, not a curve.
ClosedCurve
The curve’s start and end meet: a closed curve. Periodic networks are out of scope — which of the coincident ends a crossing belongs to is not decidable from the curves.
CurvesDoNotMeet
The two curves do not meet: gap is their measured closest approach.
MultipleCrossings
The two curves meet more than once inside the band. crossings holds
each (u-curve parameter, v-curve parameter) found.
CrossingOrder
Along this curve the other family’s crossings do not run in one order
— neither increasing nor decreasing in the order the family’s first
curve sees them — so the two families do not form a grid.
parameters are this curve’s crossing parameters in that order.
CoincidentCrossings
Two curves of family cross the other family at the same parameter
(separation apart): the skinning across them has no solution.
Overhang
The curve runs past the network boundary: its crossing with the
outermost curve of the other family at its end (0 = start, 1 = end,
after orientation) sits at parameter instead of the end, and the
overhang measures gap along the curve.
InconsistentCrossing
The two curves meet, but not at their families’ shared crossing
parameters: at those parameters they are gap apart. A Gordon surface
needs one parameter per crossing curve across the whole family;
u_parameter_offset and v_parameter_offset say how far this pair’s
own crossing sits from the shared ones.
Fields
WeightClosure
The network is rational and no per-curve re-scaling makes the two
curves’ homogeneous weights agree at every crossing: at this pair the
reconciled weights differ by ratio.
NonPositiveWeight
The blend put a control point at or beyond infinity: the rational net
weight at (row, column) is not positive.
Incompatible
Degree/knot compatibility, or the cardinal collocation, could not be
reached in family.
Geometry(String)
An underlying kernel geometry error, verbatim.
Trait Implementations§
Source§impl Clone for GordonRefusal
impl Clone for GordonRefusal
Source§impl Debug for GordonRefusal
impl Debug for GordonRefusal
Source§impl Display for GordonRefusal
impl Display for GordonRefusal
Source§impl From<GordonRefusal> for String
The lossy exit for stringly callers, exactly like crate::CoonsRefusal’s.
impl From<GordonRefusal> for String
The lossy exit for stringly callers, exactly like crate::CoonsRefusal’s.