Skip to main content

Crate axiolid_exact_arrangement

Crate axiolid_exact_arrangement 

Source
Expand description

Exact arrangement of straight segments on rational points, with face tracing (ADR 0093, ADR 0094).

ExactPoints stores points in homogeneous coordinates over exact numbers and decides orientation, order and containment exactly. arrange cuts segments at every crossing, T-junction and collinear overlap into pieces and joins equal points. trace closes labelled half-edges into rings and nests holes in outer boundaries. No tolerance enters any decision; a caller rounds the points it returns once each, which makes a vertex shared by two rings bit-identical in both.

The crate knows no mesh, plane or face. The callers give segments and say which side of a piece carries which label.

Structs§

Arrangement
The pieces of a set of segments.
ClassBoundary
The net boundary of a class after snapping.
Crossing
How the point of a vertex without input points came about.
ExactPoints
A store of exact points and the exact predicates on them.
FaceId
A face of the complement of an Arrangement.
Faces
The face on each side of every piece.
HalfEdge
A piece with a direction: from ends[0] to ends[1] when forward.
PairBudget
A count of candidate pairs against a limit, shared by the steps of one request.
Piece
A stretch of segments no other segment crosses or touches inside.
PieceId
A piece of an Arrangement.
PointId
A point of an ExactPoints store.
RingBox
The extent of a ring, for pruning candidate pairs. Never decides.
Segment
A segment between two points of the store. The caller keeps its own data per segment index.
Snapped
The edges of a snap-rounded set, as fragments of an exact arrangement.
TracedRegion
An outer ring and its holes, as indices into the rings of trace.
TracedRing
A closed boundary of a class.
Vertex
A point of the arrangement.
VertexId
A vertex of an Arrangement.

Enums§

Location
Where a point lies relative to a ring.
Nearest
Where on a segment the point nearest to a given point lies.

Constants§

CROSSING_SCRATCH_BYTES
Bytes charged for one crossing point: the Dyadic coordinates, the enclosures and the bookkeeping of a segment pair.
FRAGMENT_SCRATCH_BYTES
Bytes charged for one routed fragment: the segment and its path entry.
HOT_POINT_SCRATCH_BYTES
Bytes charged for one hot cell: its exact bounds, the point and its index entries.
SPLIT_SCRATCH_BYTES
Bytes charged for one end of a segment lying inside another one (a T-junction split): an entry in two cut lists and its share of the sort.

Functions§

arrange
Cut segments into pieces.
boxes_overlap
Whether two [min_x, min_y, max_x, max_y] boxes overlap, edges included.
canonical_rotation
Rotate a ring to start at its lexicographically smallest point; of several equal smallest points the rotation that orders lowest wins.
canonical_start
Index at which a ring starts to be canonical: at its lexicographically smallest point; of several equal smallest points the rotation that orders lowest wins.
check_winding
Refuse a class that winds more than once at some point.
faces
Number the faces of the complement of arrangement.
point_order
Order of points by x, then y (total order on binary64).
round_ratio
numerator / denominator rounded once to the nearest binary64, ties to even, subnormals included. None for a zero denominator or a result beyond the finite range.
sequence_order
Lexicographic order of point sequences; a prefix sorts first.
snap_round
Snap-round edges, straight segments between distinct points of points.
trace
Close half_edges, which all carry one class on their left, into rings and nest them.
union_box
The smallest box holding all boxes.