Trait nbez::BezCurve
[−]
[src]
pub trait BezCurve<F: Float>: AsRef<[Self::Point]> + AsMut<[Self::Point]> where Self: Sized {
type Point: Point<F>;
type Elevated: BezCurve<F, Point=Self::Point>;
fn from_slice(&[Self::Point]) -> Option<Self>;
fn interp_unbounded(&self, t: F) -> Self::Point;
fn slope_unbounded(&self, t: F) -> Self::Point::Vector;
fn elevate(&self) -> Self::Elevated;
fn split_unbounded(&self, t: F) -> (Self, Self);
fn order(&self) -> usize;
fn interp(&self, t: F) -> Option<Self::Point> { ... }
fn slope(&self, t: F) -> Option<Self::Point::Vector> { ... }
fn split(&self, t: F) -> Option<(Self, Self)> { ... }
fn interp_iter<'a>(&'a self, samples: u32) -> InterpIter<'a, F, Self> { ... }
}
Bezier curve trait
Associated Types
Required Methods
fn from_slice(&[Self::Point]) -> Option<Self>
Attempt to create a curve from a slice. Fails if the slice's length does not match the curve's order + 1.
fn interp_unbounded(&self, t: F) -> Self::Point
Perform interpolation on the curve with no range bounds
fn slope_unbounded(&self, t: F) -> Self::Point::Vector
Get the slope for the given t
with no range bounds
fn elevate(&self) -> Self::Elevated
Elevate the curve order, getting a curve that is one order higher but gives the same results upon interpolation
fn split_unbounded(&self, t: F) -> (Self, Self)
Split the curve with no range bounds
fn order(&self) -> usize
Gets the order of the curve
Provided Methods
fn interp(&self, t: F) -> Option<Self::Point>
Perform interpolation on the curve for the given t
, bounded on 0.0
to 1.0
inclusive.
Returns None
if t
is not within bounds.
fn slope(&self, t: F) -> Option<Self::Point::Vector>
Get the slope for the given t
, bounded on 0.0
to 1.0
inclusive. Returns None
if
t
is not within bounds.
fn split(&self, t: F) -> Option<(Self, Self)>
Split the curve at the given t
, bounded on 0.0
to 1.0
inclusive. Returns None
if t
is
not within bounds.
fn interp_iter<'a>(&'a self, samples: u32) -> InterpIter<'a, F, Self>
Get an iterator over the interpolated values of this curve, splitting the curve into the given number of samples.
Implementors
impl<F, P, C> BezCurve<F> for NBez<F, P, C> where F: Float, P: Point<F>, C: AsRef<[P]> + AsMut<[P]>
impl<F, P> BezCurve<F> for Bez1o<F, P> where P: Point<F>, F: Float
impl<F, P> BezCurve<F> for Bez2o<F, P> where P: Point<F>, F: Float
impl<F, P> BezCurve<F> for Bez3o<F, P> where P: Point<F>, F: Float
impl<F, P> BezCurve<F> for Bez4o<F, P> where P: Point<F>, F: Float
impl<F, P> BezCurve<F> for Bez5o<F, P> where P: Point<F>, F: Float
impl<F, P> BezCurve<F> for Bez6o<F, P> where P: Point<F>, F: Float