Skip to content

Integer Coordinates Intrinsic Triangulation

integer coordinates example

The integer coordinates data structure encodes an intrinsic triangulation using normal coordinates and roundabouts, which are integer values stored on edges. Since it avoids floating point data, this data structure is more robust than signposts, but operations such as vertex insertion can take longer. For more details, see Integer Coordinates for Intrinsic Geometry Processing.

The IntegerCoordinatesIntrinsicTriangulation is one concrete implementation (subclass) of intrinsic triangulations. Most of its functionality is documented there.


The signpost intrinsic triangulation is one of the two main intrinsic triangulation representations currently available in geometry-central, the other being signposts. For many tasks, either reprentation will be highly effective, but there are some tradeoffs.


  • Robustness. Integer coordinates are guaranteed to always maintain a topologically valid representation of the common subdivision, through any sequence of operations.


  • Performance. Integer coordinates may be moderately more expensive in terms of runtime than signposts (although both are often on the order of milliseconds). Some operations, such as tracing out a single edge of the intrinsic triangulation, are only implemented by first extracting the entire common subdivision, which has some overhead.

Not yet implemented

The methods equivalentPointOnIntrinsic() and splitEdge() from IntrinsicTriangulation are not yet implemented for the integer coordinates representation. For splitEdge(), an alternate version is provided which returns a vertex instead.


IntegerCoordinatesIntrinsicTriangulation::IntegerCoordinatesIntrinsicTriangulation(ManifoldSurfaceMesh& mesh, IntrinsicGeometryInterface& inputGeom, double mollifyEPS=1e-5)

Initialize an intrinsic triangulation sitting on top of mesh. Recall that IntrinsicGeometryInterface can be almost any geometry object, including a VertexPositionGeometry.

Initially, the intrinsic triangulation will be identical to the input mesh; it can be modified with the routines below.

The mollifyEPS parameter performs initial mollification on the intrinsic triangulation, which greatly improves floating-point robustness while generally, while having a negligible impact on accuracy. Set mollifyEPS=0 to disable.


  title={Integer Coordinates for Intrinsic Geometry Processing},
  author={Gillespie, Mark and Sharp, Nicholas and Crane, Keenan},
  journal={arXiv preprint arXiv:2106.00220},