Solids and Supersolids

Clarifying Solidean’s geometric vs. topological guarantees beyond the muddled terms 'manifold' and 'watertight'.

In computational geometry, terms like manifold or watertight are widely used but inconsistently defined.
Solidean takes a different approach: because all computations are exact, we can treat geometry itself as the ground truth and reconstruct topology on demand. This allows us to make precise distinctions between Solid, Supersolid, and NonSupersolid meshes, and to separate geometric from topological definitions.

Geometric Classes

MeshType::Solid

A mesh is geometrically solid if it unambiguously defines a volume in a simple way:

  • Every face is non-degenerate (nonzero area).
  • Crossing a face always transitions from outside to inside.
  • The winding number field is exactly 0 (outside) or exactly 1 (inside).

This is the strictest and most efficient type.

Note:
geometric solidity does not imply manifoldness, e.g. two cubes touching along an edge form a solid but are non-manifold.
Important:
All boolean operations produce solid meshes, even if the inputs are supersolid.

MeshType::Supersolid

A mesh is geometrically supersolid if it is the superposition of arbitrarily many solids:

  • Degenerate faces are allowed.
  • Arbitrary overlaps are allowed.
  • The winding number field is piecewise constant integer: 0 outside, nonzero inside.
Important:
Holes are not allowed, but many non-manifold configurations are (e.g. four faces sharing a single edge).

MeshType::NonSupersolid

No restrictions at all:

  • Holes, disconnected pieces, self-inconsistent surfaces.
  • Usually requires Operation::heal before being useful in Booleans.

Topological Classes

Geometry alone is not always enough. Sometimes you need guarantees about incidence relations in a mesh’s combinatorial structure.
That’s where Solidean’s topological definitions apply, especially for export formats.

Topologically Solid

  • Every edge has exactly one positive and one negative incident face.
  • This is close to the usual definition of a 2-manifold surface.
  • However, the 1-ring of a vertex may still split into multiple traversals or visit vertices multiple times (non-manifold corner cases).
  • When exporting, ExportOption::Manifold forces a purely manifold decomposition.

Topologically Supersolid

  • Every edge has as many positive as negative incident faces: each edge is (k, k) for some integer k.
  • Geometric supersolids correspond exactly to topological supersolids.
  • If an edge has mismatch (a, b) with a ≠ b, the mesh is no longer supersolid.
  • The difference a - b is the signed defect; the sum of all |a - b| is the global defect.
  • The defect network is the graph of all edges where a ≠ b. It can be exported and inspected for debugging.

Implications and Relationships

Understanding how the different notions relate helps in practice:

  • Every topological solid is also a topological supersolid.
  • Every geometric solid is also a geometric supersolid.
  • Topological supersolid ⇒ Geometric supersolid.
  • Topological solid ⇒ Geometric supersolid (not necessarily geometric solid, because arbitrary geometric self-intersections are allowed).
  • Topological 2-manifold ⇒ Topological solid.
  • Export with indexed triangles produces:
    • A topological solid when given a geometric solid
    • A topological supersolid when given a geometric supersolid

Most Important

If you take any topological solid or topological supersolid mesh, you can move the vertex positions arbitrarily. It will stay a topological solid/supersolid.
This implies it is still a geometric supersolid, and can therefore be imported into Solidean without healing.

This property is extremely powerful in mixed pipelines:

  • You can export with indexed topology, then run external processing such as smoothing, deformation, or optimization on the vertex positions.
  • As long as topology is preserved (or changed in a supersolid-preserving way), the mesh remains a valid MeshType::Supersolid.
  • Re-importing into Solidean is always unambiguous and mathematically well-defined.

This makes indexed export the ideal interchange format when strong guarantees are required.

Why This Matters

  • Performance: solids are the fastest to process, supersolids slower but still well-defined.
  • Robustness: non-supersolids must be healed to be valid inputs.
  • Flexibility: by distinguishing geometry vs. topology, Solidean can import a very wide range of meshes and still guarantee exact, consistent results.