[][src]Crate lyon_geom

Simple 2D geometric primitives on top of euclid.

This crate is reexported in lyon.

Overview.

This crate implements some of the maths to work with:

  • lines and line segments,
  • quadratic and cubic bézier curves,
  • elliptic arcs,
  • triangles.

Flattening

Flattening is the action of approximating a curve with a succession of line segments.

The flattening algorithm implemented in this crate is based on the paper Fast, Precise Flattening of Cubic Bézier Segment Offset Curves. It tends to produce a better approximations than the usual recursive subdivision approach (or in other words, it generates less segments for a given tolerance threshold).

The tolerance threshold taken as input by the flattening algorithms corresponds to the maximum distance between the curve and its linear approximation. The smaller the tolerance is, the more precise the approximation and the more segments are generated. This value is typically chosen in function of the zoom level.

The figure above shows a close up on a curve (the dotted line) and its linear approximation (the black segments). The tolerance threshold is represented by the light green area and the orange arrow.

Re-exports

pub use arrayvec;
pub use euclid;

Modules

arc

Elliptic arc related maths and tools.

cubic_bezier
cubic_to_quadratic
quadratic_bezier
traits
utils

Structs

Angle

An angle in radians.

Arc

An elliptic arc curve segment.

ArcFlags

Flag parameters for arcs as described by the SVG specification.

CubicBezierSegment

A 2d curve segment defined by four points: the beginning of the segment, two control points and the end of the segment.

Line

An infinite line defined by a point and a vector.

LineEquation

A line defined by the equation a * x + b * y + c = 0; a * a + b * b = 1.

LineSegment

A linear segment.

Monotonic

A x and y monotonic curve segment, for example Monotonic<QuadraticBezierSegment>.

QuadraticBezierSegment

A 2d curve segment defined by three points: the beginning of the segment, a control point and the end of the segment.

SvgArc

An elliptic arc curve segment using the SVG's end-point notation.

Triangle

A 2D triangle defined by three points a, b and c.

Enums

BezierSegment

Either a cubic, quadratic or linear bézier segment.

Traits

Scalar
Segment

Common APIs to segment types.

Functions

point

Shorthand for Point::new(x, y).

rect

Shorthand for Rect::new(Point::new(x, y), Size::new(w, h)).

size

Shorthand for Size::new(x, y).

vector

Shorthand for Vector::new(x, y).

Type Definitions

Point

Alias for euclid::default::Point2D.

Rect

Alias for euclid::default::Rect

Rotation

Alias for euclid::default::Rotation2D

Scale

Alias for euclid::default::Scale

Size

Alias for euclid::default::Size2D.

Transform

Alias for euclid::default::Transform2D

Translation

Alias for euclid::default::Translation2D

Vector

Alias for euclid::default::Vector2D.