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 moreimpl Copy for SurfaceBounds
Source§impl Debug for SurfaceBounds
impl Debug for SurfaceBounds
Source§impl PartialEq for SurfaceBounds
impl PartialEq for SurfaceBounds
impl StructuralPartialEq for SurfaceBounds
Auto Trait Implementations§
impl Freeze for SurfaceBounds
impl RefUnwindSafe for SurfaceBounds
impl Send for SurfaceBounds
impl Sync for SurfaceBounds
impl Unpin for SurfaceBounds
impl UnsafeUnpin for SurfaceBounds
impl UnwindSafe for SurfaceBounds
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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