pub struct SurfaceBounds {
pub du: f64,
pub dv: f64,
pub duu: f64,
pub duv: f64,
pub dvv: f64,
pub smooth: bool,
pub interpolation: [f64; 3],
}Expand description
Suprema of a surface’s partial derivatives over a parameter box.
du, dv bound |S_u|, |S_v|; duu, duv, dvv bound the second
partials. smooth is false when a B-spline knot line of full
multiplicity crosses the box: the second-derivative bounds then hold on
each side but not across, and a caller must fall back to a first-order
argument there.
Fields§
§du: f64sup |S_u|.
dv: f64sup |S_v|.
duu: f64sup |S_uu|.
duv: f64sup |S_uv|.
dvv: f64sup |S_vv|.
smooth: boolWhether the second-derivative bounds may be used across the box.
interpolation: [f64; 3]Coefficients [A, B, C] for linear interpolation over a parameter
triangle in the box: every surface point over the triangle is within
1/2 sum_i l_i q(y_i - x), q(d) = A d_u^2 + 2 B |d_u d_v| + C d_v^2, of the triangle spanned by the corners’ surface points.
For a polynomial surface they are duu, duv, dvv. For a rational
B-spline S = A / w they are (|A_uu| + R |w_uu|) / w_min and so on
(centred numerator, R the active points’ spread): the point
l_A / l_w of the homogeneous interpolants is a convex combination
of the corners’ surface points, so it lies in their triangle, and
S - l_A / l_w = ((A - l_A) - (l_A / l_w)(w - l_w)) / w carries no
first-derivative terms, unlike the quotient rule for S_uu.
Trait Implementations§
Source§impl Clone for SurfaceBounds
impl Clone for SurfaceBounds
Source§fn clone(&self) -> SurfaceBounds
fn clone(&self) -> SurfaceBounds
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more