pub enum NodeKey {
Vertex {
operand: Operand,
index: u32,
},
EdgeSurface {
edge: EdgeKey,
at: PointKey,
},
}Expand description
An intersection point, named by the source topology that produced it.
Never by coordinates: see the module docs for why that distinction decides whether the assembled curve can crack.
Variants§
Vertex
An original mesh vertex lying exactly on the other surface.
Fields
EdgeSurface
An edge of one operand crossing the other operand’s surface.
Identified by the edge ALONE, deliberately. The crossed triangle is not part of the name: a closed surface is triangulated arbitrarily, so one puncture point can sit on a shared triangle edge and be reported once per incident triangle. Including the face index would give that single point two names, and the curve would fragment into disconnected two-node pieces instead of closing into a loop.
An edge crossing a plane it is NOT parallel to punctures it exactly once, so the pierced plane completes the name. The plane is identified by its own geometry rather than by a triangle index: a flat side of a solid is triangulated arbitrarily, and naming the triangle would give one puncture two names whenever it lands on a shared triangle edge.
This matters for a through-cut. An edge that enters one side of a slab and leaves the other punctures the surface TWICE; identifying the node by the edge alone would collapse both punctures into a single name and corrupt the curve into degree-3 nodes.