Integer Coordinates Intrinsic Triangulation
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.
Tradeoffs
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.
Pros:
- Robustness. Integer coordinates are guaranteed to always maintain a topologically valid representation of the common subdivision, through any sequence of operations.
Cons:
- 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.
Constructors
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.
Citation
@article{gillespie2021integer,
title={Integer Coordinates for Intrinsic Geometry Processing},
author={Gillespie, Mark and Sharp, Nicholas and Crane, Keenan},
journal={arXiv preprint arXiv:2106.00220},
year={2021}
}