pub trait IterableCurve<T> {
// Required methods
fn domain(&self) -> Interval;
fn sample_iter_unchecked(&self, t: f32) -> impl Iterator<Item = T>;
// Provided methods
fn sample_iter_clamped(&self, t: f32) -> impl Iterator<Item = T> { ... }
fn sample_iter(&self, t: f32) -> Option<impl Iterator<Item = T>> { ... }
}
Expand description
A curve which provides samples in the form of Iterator
s.
This is an abstraction that provides an interface for curves which look like Curve<Vec<T>>
but side-stepping issues with allocation on sampling. This happens when the size of an output
array cannot be known statically.
Required Methods§
sourcefn sample_iter_unchecked(&self, t: f32) -> impl Iterator<Item = T>
fn sample_iter_unchecked(&self, t: f32) -> impl Iterator<Item = T>
Sample a point on this curve at the parameter value t
, producing an iterator over values.
This is the unchecked version of sampling, which should only be used if the sample time t
is already known to lie within the curve’s domain.
Values sampled from outside of a curve’s domain are generally considered invalid; data which is nonsensical or otherwise useless may be returned in such a circumstance, and extrapolation beyond a curve’s domain should not be relied upon.
Provided Methods§
sourcefn sample_iter_clamped(&self, t: f32) -> impl Iterator<Item = T>
fn sample_iter_clamped(&self, t: f32) -> impl Iterator<Item = T>
Sample this curve at a specified time t
, producing an iterator over sampled values.
The parameter t
is clamped to the domain of the curve.
sourcefn sample_iter(&self, t: f32) -> Option<impl Iterator<Item = T>>
fn sample_iter(&self, t: f32) -> Option<impl Iterator<Item = T>>
Sample this curve at a specified time t
, producing an iterator over sampled values.
If the parameter t
does not lie in the curve’s domain, None
is returned.