Skip to main content

Module intersection

Module intersection 

Source
Expand description

Intersection segments between two triangle meshes, and the polylines they assemble into.

§The capability this adds

ScalarBoolean is exact and total for disjoint, nested, and identical operands, and refuses everything else. The single missing capability is resolving surfaces that properly cross, which needs the intersection curve first. This module computes it.

§Why nodes are symbolic, not coordinates

An intersection point is named by the source topology that produced it – a vertex index, or the pair of faces and the edge that crossed – never by its computed position. Two faces sharing an edge then produce byte- identical node names, so stitching segments into a polyline is exact integer matching with no tolerance anywhere.

Matching on coordinates instead would need an epsilon, and an epsilon in the stitching step is precisely how a boolean develops cracks: two segments that should share an endpoint fail to join, and the curve opens. ScalarSection already uses this technique for plane cuts; this reuses it for the mesh-mesh case.

§Honest limits

Coplanar face pairs are refused, not approximated. Their intersection is an area rather than a curve, and resolving it needs a 2D overlap policy the caller must choose. Refusing keeps this module’s output meaning exactly one thing.

Structs§

EdgeKey
An undirected mesh edge, named by its two vertex indices in sorted order.
IntersectionCurve
The intersection curve between two meshes, as segments plus positions.
IntersectionSegment
One segment of the intersection curve, joining two nodes.
PointKey
A point named by its exact coordinate bits.
Polyline
A connected run of the intersection curve.

Enums§

NodeKey
An intersection point, named by the source topology that produced it.
Operand
Which operand a piece of source topology belongs to.

Functions§

assemble_polylines
Stitch segments into maximal connected polylines.
intersection_segments
Compute the intersection curve between two triangle meshes.