Expand description
What hangs off a topology node: geometry, tolerances, edge representations.
docs/DATA_MODEL.md §5 and §6.
§Tolerances are per entity
Every vertex, edge and face carries its own Tolerance: the radius
within which it is considered to lie. Operations may only widen one, and the
containment rule tol(vertex) >= tol(edge) >= tol(face) holds between
entities in a boundary relationship (check_containment).
This is not a workaround for imprecise code. Exact arithmetic cannot represent the intersection curve of two curved surfaces, so the topology carries tolerances, and that is what lets results close up.
§An edge carries a list of representations
Not one curve: a list. A single edge holds a 3D curve, one pcurve per adjacent face, two pcurves where it is a seam on a closed surface, and cached polylines. Face splitting during a boolean happens in a surface’s 2D parameter space, so without a pcurve on each face there is nothing to split with. And since surfaces are parameterized differently, one 2D curve cannot serve two faces.
Structs§
- Edge
Data - An edge: a tolerance, a set of representations, and the flags that say whether they agree.
- Face
Data - A face: a surface, where it sits, and how far the face may stray from it.
- Geometry
Store - The geometry a model’s topology refers into.
- Vertex
Data - A vertex: a point and how far it may be from where it claims to be.
Enums§
- Edge
Repr - One way of describing where an edge runs.
- Node
Data - What a topology node holds, beyond its children.
Functions§
- check_
containment - Check the containment rule between a bounding entity and what it bounds.
- check_
range - Whether a parameter range is usable.
- enforce_
containment - Widen
boundingjust enough to satisfy the containment rule againstbounded.
Type Aliases§
- CurveId
- A handle to a space curve.
- PCurve
Id - A handle to a curve in a surface’s parameter space.
- Surface
Id - A handle to a surface.
- Triangulation
Id - A handle to a cached triangulation.