pub enum PathSeg {
Line(Line),
Quad(QuadBez),
Cubic(CubicBez),
}
Expand description
A segment of a Bézier path.
Variants§
Line(Line)
A line segment.
Quad(QuadBez)
A quadratic bezier segment.
Cubic(CubicBez)
A cubic bezier segment.
Implementations§
Source§impl PathSeg
impl PathSeg
Sourcepub fn as_path_el(&self) -> PathEl
pub fn as_path_el(&self) -> PathEl
Get the PathEl
that is equivalent to discarding the segment start point.
Sourcepub fn reverse(&self) -> PathSeg
pub fn reverse(&self) -> PathSeg
Returns a new PathSeg
describing the same path as self
, but with
the points reversed.
Sourcepub fn intersect_line(&self, line: Line) -> ArrayVec<LineIntersection, 3>
pub fn intersect_line(&self, line: Line) -> ArrayVec<LineIntersection, 3>
Compute intersections against a line.
Returns a vector of the intersections. For each intersection,
the t
value of the segment and line are given.
Note: This test is designed to be inclusive of points near the endpoints
of the segment. This is so that testing a line against multiple
contiguous segments of a path will be guaranteed to catch at least one
of them. In such cases, use higher level logic to coalesce the hits
(the t
value may be slightly outside the range of 0..1).
§Examples
let seg = PathSeg::Line(Line::new((0.0, 0.0), (2.0, 0.0)));
let line = Line::new((1.0, 2.0), (1.0, -2.0));
let intersection = seg.intersect_line(line);
assert_eq!(intersection.len(), 1);
let intersection = intersection[0];
assert_eq!(intersection.segment_t, 0.5);
assert_eq!(intersection.line_t, 0.5);
let point = seg.eval(intersection.segment_t);
assert_eq!(point, Point::new(1.0, 0.0));
Trait Implementations§
Source§impl<'de> Deserialize<'de> for PathSeg
impl<'de> Deserialize<'de> for PathSeg
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<PathSeg, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<PathSeg, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Mul<PathSeg> for TranslateScale
impl Mul<PathSeg> for TranslateScale
Source§impl ParamCurve for PathSeg
impl ParamCurve for PathSeg
Source§impl ParamCurveArclen for PathSeg
impl ParamCurveArclen for PathSeg
Source§impl ParamCurveArea for PathSeg
impl ParamCurveArea for PathSeg
Source§fn signed_area(&self) -> f64
fn signed_area(&self) -> f64
Source§impl ParamCurveExtrema for PathSeg
impl ParamCurveExtrema for PathSeg
Source§fn extrema(
&self,
) -> ArrayVec<f64, kurbo::::bezpath::{impl#19}::extrema::{constant#0}>
fn extrema( &self, ) -> ArrayVec<f64, kurbo::::bezpath::{impl#19}::extrema::{constant#0}>
Source§fn extrema_ranges(
&self,
) -> ArrayVec<Range<f64>, kurbo::::param_curve::ParamCurveExtrema::extrema_ranges::{constant#0}>
fn extrema_ranges( &self, ) -> ArrayVec<Range<f64>, kurbo::::param_curve::ParamCurveExtrema::extrema_ranges::{constant#0}>
Source§fn bounding_box(&self) -> Rect
fn bounding_box(&self) -> Rect
Source§impl ParamCurveNearest for PathSeg
impl ParamCurveNearest for PathSeg
Source§impl Serialize for PathSeg
impl Serialize for PathSeg
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Source§impl Shape for PathSeg
impl Shape for PathSeg
Source§fn area(&self) -> f64
fn area(&self) -> f64
The area under the curve.
We could just return 0
, but this seems more useful.
Source§type PathElementsIter<'iter> = PathSegIter
type PathElementsIter<'iter> = PathSegIter
path_elements
method.