pub struct GordonReport {Show 24 fields
pub u_order: Vec<usize>,
pub v_order: Vec<usize>,
pub u_reversed: Vec<bool>,
pub v_reversed: Vec<bool>,
pub u_parameters: Vec<f64>,
pub v_parameters: Vec<f64>,
pub crossing_band: f64,
pub closest_approach: f64,
pub crossing_gap: f64,
pub parameter_spread: f64,
pub u_weight_scales: Vec<f64>,
pub v_weight_scales: Vec<f64>,
pub weight_closure: f64,
pub u_work: Vec<CompatWork>,
pub v_work: Vec<CompatWork>,
pub skin_degree_u: usize,
pub skin_degree_v: usize,
pub degree_u: usize,
pub degree_v: usize,
pub control_rows: usize,
pub control_columns: usize,
pub min_weight: f64,
pub interpolation_bound: f64,
pub sampled_interpolation_residual: f64,
}Expand description
What the constructor had to do, and what it measured doing it.
Per-curve vectors indexed by caller index say so; everything else about a curve’s POSITION is in network order — v increasing for u-curves, u increasing for v-curves.
Fields§
§u_order: Vec<usize>Caller index of the u-curve at each network position (v increasing).
v_order: Vec<usize>Caller index of the v-curve at each network position (u increasing).
u_reversed: Vec<bool>Which u-curves were reversed to run with +u. Caller order.
v_reversed: Vec<bool>Which v-curves were reversed to run with +v. Caller order.
u_parameters: Vec<f64>The u at which each network v-curve sits: 0.0, the shared interior
crossing parameters, 1.0.
v_parameters: Vec<f64>The v at which each network u-curve sits.
crossing_band: f64The band every crossing was judged against.
closest_approach: f64Worst closest-approach distance of a pair at its own crossing.
crossing_gap: f64The ADMITTED CROSSING MISS: the worst distance between a u-curve and a
v-curve at the families’ shared crossing parameters. No surface passes
through two curves that disagree there, so this is the input’s own
disagreement, and it is what separates “interpolated to round-off”
(this reads round-off too) from “within the bound because the input
missed by this much”. Read it beside Self::interpolation_bound.
parameter_spread: f64Worst offset of a pair’s own crossing parameter from the shared one.
u_weight_scales: Vec<f64>Factor each u-curve’s homogeneous control points were scaled by to
reconcile the weights at the crossings. All 1.0 for polynomial
input. Caller order.
v_weight_scales: Vec<f64>As Self::u_weight_scales, for the v-curves.
weight_closure: f64The reconciled weight ratio farthest from 1 over every crossing.
u_work: Vec<CompatWork>Degree elevation / knot insertion / domain re-mapping per u-curve.
v_work: Vec<CompatWork>As Self::u_work, for the v-curves.
skin_degree_u: usizeDegree of the cardinal functions that skin the v-curves across u.
skin_degree_v: usizeDegree of the cardinal functions that skin the u-curves across v.
degree_u: usize§degree_v: usize§control_rows: usize§control_columns: usize§min_weight: f64Smallest rational weight in the blended control net.
interpolation_bound: f64Worst homogeneous distance between the surface’s iso-curve at a
network parameter and its compatible (weight-reconciled) input curve,
control point against control point. The basis is a non-negative
partition of unity, so this bounds the homogeneous curve deviation
everywhere along the curve, not just at samples — in exact arithmetic.
It is not a bound on Self::sampled_interpolation_residual: that
reading is Euclidean and carries two evaluators’ round-off, so at
round-off scale it can read above this, and for rational input the
Euclidean deviation can exceed the homogeneous one by up to
(1 + |point|) / weight. Round-off when
Self::crossing_gap is; otherwise it carries that miss — half of it
through an interior crossing, all of it at an interior curve’s end on
a boundary.
sampled_interpolation_residual: f64Worst Euclidean distance between the surface and an input curve, evaluated by the kernel’s surface and curve evaluators at uniform samples of every curve — an independent reading of the same promise.