[−]Struct piet_common::kurbo::QuadBez
A single quadratic Bézier segment.
Fields
p0: Pointp1: Pointp2: PointMethods
impl QuadBez
pub fn new<V>(p0: V, p1: V, p2: V) -> QuadBez where
V: Into<Point>,
V: Into<Point>,
Create a new quadratic Bézier segment.
pub fn raise(&self) -> CubicBez
Raise the order by 1.
Returns a cubic Bézier segment that exactly represents this quadratic.
Trait Implementations
impl ParamCurveArea for QuadBez
fn signed_area(&self) -> f64
impl ParamCurveArclen for QuadBez
fn arclen(&self, _accuracy: f64) -> f64
Arclength of a quadratic Bézier segment.
This computation is based on an analytical formula. Since that formula suffers from numerical instability when the curve is very close to a straight line, we detect that case and fall back to Legendre-Gauss quadrature.
Accuracy should be better than 1e-13 over the entire range.
Adapted from http://www.malczak.linuxpl.com/blog/quadratic-bezier-curve-length/ with permission.
fn inv_arclen(&self, arclen: f64, accuracy: f64) -> f64
Solve for the parameter that has the given arclength from the start. Read more
impl ParamCurveNearest for QuadBez
fn nearest(&self, p: Point, _accuracy: f64) -> (f64, f64)
Find nearest point, using analytical algorithm based on cubic root finding.
impl Debug for QuadBez
impl Mul<QuadBez> for Affine
type Output = QuadBez
The resulting type after applying the * operator.
fn mul(self, other: QuadBez) -> QuadBez
impl ParamCurveCurvature for QuadBez
impl ParamCurveExtrema for QuadBez
fn extrema(&self) -> ArrayVec<[f64; 4]>
fn extrema_ranges(&self) -> ArrayVec<[Range<f64>; 5]>
Return parameter ranges, each of which is monotonic within the range.
fn bounding_box(&self) -> Rect
The smallest rectangle that encloses the curve in the range (0..1).
impl ParamCurveDeriv for QuadBez
type DerivResult = Line
fn deriv(&self) -> Line
fn gauss_arclen(&self, coeffs: &[(f64, f64)]) -> f64
Estimate arclength using Gaussian quadrature. Read more
impl Clone for QuadBez
fn clone(&self) -> QuadBez
fn clone_from(&mut self, source: &Self)1.0.0[src]
Performs copy-assignment from source. Read more
impl ParamCurve for QuadBez
fn eval(&self, t: f64) -> Point
fn start(&self) -> Point
fn end(&self) -> Point
fn subdivide(&self) -> (QuadBez, QuadBez)
Subdivide into halves, using de Casteljau.
fn subsegment(&self, range: Range<f64>) -> QuadBez
impl Copy for QuadBez
Auto Trait Implementations
Blanket Implementations
impl<T> ToOwned for T where
T: Clone, [src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T[src]
fn clone_into(&self, target: &mut T)[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T> From<T> for T[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T[src]
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> RoundFrom<T> for T[src]
fn round_from(x: T) -> T[src]
impl<T, U> RoundInto<U> for T where
U: RoundFrom<T>, [src]
U: RoundFrom<T>,