pub trait Segment: Copy + Sized {
type Scalar: Scalar;
Show 15 methods
// Required methods
fn from(&self) -> Point<Self::Scalar>;
fn to(&self) -> Point<Self::Scalar>;
fn sample(&self, t: Self::Scalar) -> Point<Self::Scalar>;
fn derivative(&self, t: Self::Scalar) -> Vector<Self::Scalar>;
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 { ... }
}
Expand description
Common APIs to segment types.
Required Associated Types§
Required Methods§
sourcefn sample(&self, t: Self::Scalar) -> Point<Self::Scalar>
fn sample(&self, t: Self::Scalar) -> Point<Self::Scalar>
Sample the curve at t (expecting t between 0 and 1).
sourcefn derivative(&self, t: Self::Scalar) -> Vector<Self::Scalar>
fn derivative(&self, t: Self::Scalar) -> Vector<Self::Scalar>
Sample the derivative at t (expecting t between 0 and 1).
sourcefn before_split(&self, t: Self::Scalar) -> Self
fn before_split(&self, t: Self::Scalar) -> Self
Return the curve before the split point.
sourcefn after_split(&self, t: Self::Scalar) -> Self
fn after_split(&self, t: Self::Scalar) -> Self
Return the curve after the split point.
sourcefn split_range(&self, t_range: Range<Self::Scalar>) -> Self
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.
sourcefn approximate_length(&self, tolerance: Self::Scalar) -> Self::Scalar
fn approximate_length(&self, tolerance: Self::Scalar) -> Self::Scalar
Compute the length of the segment using a flattened approximation.
sourcefn for_each_flattened_with_t(
&self,
tolerance: Self::Scalar,
callback: &mut dyn FnMut(&LineSegment<Self::Scalar>, Range<Self::Scalar>),
)
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§
Object Safety§
This trait is not object safe.