Module prelude

Source
Expand description

Short-cut to import all functionality of this library.

Re-exports§

pub use super::rectangle_decomposition::*;

Modules§

traits
Common traits for geometrical objects.

Structs§

ComplexTransform
Transformation described by a mirroring at the x axis, then a rotation around the origin, then a scaling, then a translation. This transformation allows rotations by arbitrary angles.
Edge
An edge (line segment) is represented by its starting point and end point.
Interval
A one dimensional interval which is represented by a start and end coordinate.
IrregularRepetition
Describe a non-equispaced repetition by storing a list of offsets.
Matrix2dTransform
Description of a transformation in the euclidean plane by a 2x2 matrix A. Transforming a point p is computed by the matrix product A*p.
Matrix3dTransform
Affine transformation represented as a 3x3 matrix like:
MultiPolygon
A MultiPolygon is a list of polygons. There is no restrictions on the polygons (they can be intersecting, empty, etc.).
Path
Path is essentially a chain of line segments but with a possibly a non-zero width. It can be thought of the shape resulting by a stroke of a thick pen along the line segments.
Point
A point is defined by a x and y coordinate in the euclidean plane.
PointString
A point string is a finite sequence of points. TODO: Implement Deref for accessing the list of points.
Polygon
A polygon possibly with holes. The polygon is defined by a hull and a list of holes which are both SimplePolygons.
REdge
An rectilinear edge (horizontal or vertical line segment) is represented by its starting point and end point.
Rect
A rectangle which is oriented along the x an y axis and represented by its lower left and upper right corner.
RectEdgeIterator
Iterator over edges of a rectangle.
RegularRepetition
Describe a equi-spaced n*m two-dimensional repetition as a lattice. The offsets are computed as (i*a, j*b) for i in 0..n and j in 0..m. a and b the distance vectors between two neighbouring points.
Rot90Transform
Transformation that consists only of a rotation by a multiple of 90 degrees around the origin (0, 0).
SimplePolygon
A SimplePolygon is a polygon defined by vertices. It does not contain holes but can be self-intersecting.
SimpleRPolygon
A SimpleRPolygon is a rectilinear polygon. It does not contain holes but can be self-intersecting. The vertices are stored in an implicit format (one coordinate of two neighbour vertices is always the same for rectilinear polygons). This reduces memory usage but has the drawback that edges must alternate between horizontal and vertical. Vertices between two edges of the same orientation will be dropped.
SimpleTransform
Describes a geometric transformation that consists of a optional mirroring along the x-axis followed by a rotation by a multiple of 90 degrees followed by a displacement.
Text
A text is a point associated with a string. This struct does not define how the text should be rendered on screen.
Vector
Vector defines a two dimensional vector with x and y components in the Euclidean plane.

Enums§

Angle
Angle expressed as a multiple of 90 degrees.
ContainsResult
This is a result type for containment checks.
Direction1D
Direction in one dimension.
Direction2D
Directions along the coordinate axes in two dimensions.
EdgeIntersection
Return type for the edge-edge intersection functions. Stores all possible results of an edge to edge intersection.
Geometry
Abstracted geometrical shape.
LineIntersection
Return type for the line-line intersection functions. Stores all possible results of a line to line intersection.
Orientation
Relative orientation of two geometrical objects such as vectors.
Orientation2D
Orientation in two dimensions along one of the axes.
PathEndType
Encoding for the type of the beginning and end of the path.
REdgeOrientation
Orientation of a rectilinear edge.
RLineIntersection
Return type for the line-line intersection functions. Stores all possible results of a line to line intersection.
Repetition
Describe the regular or irregular repetition of a geometrical object.
Side
Location relative to a directed line or edge. Something can be on the left of the line, right of the line or on top of the line (center).

Constants§

PREC_DISTANCE
Precision for distance related decisions.

Traits§

AffineTransform
Geometric transformation which preserves parallelism. Adds ‘shear’ to the SimilarityTransform.
Area
Calculate the area of a geometry.
BoundingBox
Calculation of the ‘bounding box’, i.e. the smallest rectangle that contains the geometrical object.
CoordinateType
Trait for types that can be used as coordinates in the euclidean plane. In practice this are integers, floats and possible rational numbers.
Deref
Used for immutable dereferencing operations, like *v.
DisplacementTransform
Geometric transformation which preserves oriented angles and distances (i.e. translation).
DoubledOrientedArea
Calculate the doubled oriented area of a geometry. Using the doubled area allows to compute the area without using fractions. This is especially helpful when computing in integer coordinates.
EdgeEndpoints
Get the endpoints of an edge.
EdgeIntersect
Define the intersection between two edges (i.e. line segments).
IntoEdges
Iterate over edges. For an n-gon this would produce n edges.
IsometricTransform
Geometric transformation which preserves angles and distances (e.g. euclidean transform).
IsometricTransform90
Geometric transformation which preserves angles and distances (e.g. euclidean transform) but allows only rotations by a multiple of 90 degrees.
MapPointwise
Transform the geometrical object by transforming each point of it.
Mirror
Mirror at the x or y axis.
RotateOrtho
Rotate by a integer multiple of 90 degrees.
Scale
Scale the geometrical shape. Scaling center is the origin (0, 0).
SimilarityTransform
Geometric transformation which preserves angles and ratios of distances. Adds resizing to the IsometricTransform.
SimilarityTransform90
Geometric transformation which preserves angles and ratios of distances. Adds resizing by integer numbers to the IsometricTransform90.
TextType
Trait for types that can be used as the text of this label. The most simple solution is to use String. However, in many cases where the same text is used in many labels it might be desirable to use ‘string interning’ for more efficient memory usage. Then an Rc<String> could be used for instance.
ToPolygon
Trait for the conversion of a geometric shape to a polygon.
Transformation
General geometric transformation.
Translate
Translate the geometrical object by a vector.
TryBoundingBox
Try the calculation of the ‘bounding box’, i.e. the smallest rectangle that contains the geometrical object. In some cases this is not always possible, so the try might fail. For instance a set of polygons does not have a bounding box if the set is empty.
TryCastCoord
This trait defines the type-casting of the coordinate types for geometrical objects.
TryIntoBoundingBox
Try to compute the bounding box while consuming the data. This is intended to be used for computing bounding boxes over iterators.
WindingNumber
Compute the winding number of a geometrical object around a point. The winding number is used to check if a point is contained in a shape.
Zero
Defines an additive identity element for Self.

Type Aliases§

DistanceType
Default type for euclidean distances.
FloatType
Default floating point type.
REdgeIntersection
Return type for the edge-edge intersection functions. Stores all possible results of a edge to edge intersection.