pub trait Segment: Copy + Sized {
    type Scalar: Scalar;

Show 15 methods // Required methods fn from(&self) -> Point2D<Self::Scalar, UnknownUnit>; fn to(&self) -> Point2D<Self::Scalar, UnknownUnit>; fn sample(&self, t: Self::Scalar) -> Point2D<Self::Scalar, UnknownUnit>; fn derivative(&self, t: Self::Scalar) -> Vector2D<Self::Scalar, UnknownUnit>; fn split(&self, t: Self::Scalar) -> (Self, Self); fn before_split(&self, t: Self::Scalar) -> Self; fn after_split(&self, t: Self::Scalar) -> Self; fn split_range(&self, t_range: Range<Self::Scalar>) -> Self; fn flip(&self) -> Self; fn approximate_length(&self, tolerance: Self::Scalar) -> Self::Scalar; fn for_each_flattened_with_t( &self, tolerance: Self::Scalar, callback: &mut dyn FnMut(&LineSegment<Self::Scalar>, Range<Self::Scalar>) ); // Provided methods fn x(&self, t: Self::Scalar) -> Self::Scalar { ... } fn y(&self, t: Self::Scalar) -> Self::Scalar { ... } fn dx(&self, t: Self::Scalar) -> Self::Scalar { ... } fn dy(&self, t: Self::Scalar) -> Self::Scalar { ... }
}
Available on crate feature canvas only.
Expand description

Common APIs to segment types.

Required Associated Types§

Required Methods§

fn from(&self) -> Point2D<Self::Scalar, UnknownUnit>

Start of the curve.

fn to(&self) -> Point2D<Self::Scalar, UnknownUnit>

End of the curve.

fn sample(&self, t: Self::Scalar) -> Point2D<Self::Scalar, UnknownUnit>

Sample the curve at t (expecting t between 0 and 1).

fn derivative(&self, t: Self::Scalar) -> Vector2D<Self::Scalar, UnknownUnit>

Sample the derivative at t (expecting t between 0 and 1).

fn split(&self, t: Self::Scalar) -> (Self, Self)

Split this curve into two sub-curves.

fn before_split(&self, t: Self::Scalar) -> Self

Return the curve before the split point.

fn after_split(&self, t: Self::Scalar) -> Self

Return the curve after the split point.

fn split_range(&self, t_range: Range<Self::Scalar>) -> Self

Return the curve inside a given range of t.

This is equivalent splitting at the range’s end points.

fn flip(&self) -> Self

Swap the direction of the segment.

fn approximate_length(&self, tolerance: Self::Scalar) -> Self::Scalar

Compute the length of the segment using a flattened approximation.

fn for_each_flattened_with_t( &self, tolerance: Self::Scalar, callback: &mut dyn FnMut(&LineSegment<Self::Scalar>, Range<Self::Scalar>) )

Approximates the curve with sequence of line segments.

The tolerance parameter defines the maximum distance between the curve and its approximation.

The parameter t at the final segment is guaranteed to be equal to 1.0.

Provided Methods§

fn x(&self, t: Self::Scalar) -> Self::Scalar

Sample x at t (expecting t between 0 and 1).

fn y(&self, t: Self::Scalar) -> Self::Scalar

Sample y at t (expecting t between 0 and 1).

fn dx(&self, t: Self::Scalar) -> Self::Scalar

Sample x derivative at t (expecting t between 0 and 1).

fn dy(&self, t: Self::Scalar) -> Self::Scalar

Sample y derivative at t (expecting t between 0 and 1).

Object Safety§

This trait is not object safe.

Implementors§

§

impl<S> Segment for Arc<S>
where S: Scalar,

§

type Scalar = S

§

impl<S> Segment for CubicBezierSegment<S>
where S: Scalar,

§

type Scalar = S

§

impl<S> Segment for LineSegment<S>
where S: Scalar,

§

type Scalar = S

§

impl<S> Segment for QuadraticBezierSegment<S>
where S: Scalar,

§

type Scalar = S