pub struct CubicCardinalSpline<P: Point> { /* private fields */ }
Expand description

A spline interpolated continuously across the nearest four control points, with the position of the curve specified at every control point and the tangents computed automatically.

Note the Catmull-Rom spline is a special case of Cardinal spline where the tension is 0.5.

Interpolation

The curve passes through every control point.

Tangency

Automatically defined at each control point.

Continuity

C1 continuous.

Usage

let points = [
    vec2(-1.0, -20.0),
    vec2(3.0, 2.0),
    vec2(5.0, 3.0),
    vec2(9.0, 8.0),
];
let cardinal = CubicCardinalSpline::new(0.3, points).to_curve();
let positions: Vec<_> = cardinal.iter_positions(100).collect();

Implementations§

source§

impl<P: Point> CubicCardinalSpline<P>

source

pub fn new(tension: f32, control_points: impl Into<Vec<P>>) -> Self

Build a new Cardinal spline.

source

pub fn new_catmull_rom(control_points: impl Into<Vec<P>>) -> Self

Build a new Catmull-Rom spline, the special case of a Cardinal spline where tension = 1/2.

Trait Implementations§

source§

impl<P: Point> CubicGenerator<P> for CubicCardinalSpline<P>

source§

fn to_curve(&self) -> CubicCurve<P>

Build a CubicCurve by computing the interpolation coefficients for each curve segment.

Auto Trait Implementations§

§

impl<P> RefUnwindSafe for CubicCardinalSpline<P>
where P: RefUnwindSafe,

§

impl<P> Send for CubicCardinalSpline<P>
where P: Send,

§

impl<P> Sync for CubicCardinalSpline<P>
where P: Sync,

§

impl<P> Unpin for CubicCardinalSpline<P>
where P: Unpin,

§

impl<P> UnwindSafe for CubicCardinalSpline<P>
where P: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.