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 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_ranges(&self) -> ArrayVec<Range<f64>, { _ }>
fn extrema_ranges(&self) -> ArrayVec<Range<f64>, { _ }>
Source§fn bounding_box(&self) -> Rect
fn bounding_box(&self) -> Rect
Source§impl ParamCurveNearest for PathSeg
impl ParamCurveNearest for PathSeg
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.