Trait Segment
pub trait Segment: Sized + Copy {
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 { ... }
}
canvas
only.Expand description
Common APIs to segment types.
Required Associated Types§
Required Methods§
fn from(&self) -> Point2D<Self::Scalar, UnknownUnit>
fn from(&self) -> Point2D<Self::Scalar, UnknownUnit>
Start of the curve.
fn to(&self) -> Point2D<Self::Scalar, UnknownUnit>
fn to(&self) -> Point2D<Self::Scalar, UnknownUnit>
End of the curve.
fn sample(&self, t: Self::Scalar) -> Point2D<Self::Scalar, UnknownUnit>
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>
fn derivative(&self, t: Self::Scalar) -> Vector2D<Self::Scalar, UnknownUnit>
Sample the derivative at t (expecting t between 0 and 1).
fn before_split(&self, t: Self::Scalar) -> Self
fn before_split(&self, t: Self::Scalar) -> Self
Return the curve before the split point.
fn after_split(&self, t: Self::Scalar) -> Self
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
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
fn flip(&self) -> Self
Swap the direction of the segment.
fn 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.
fn 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§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.