Snap rounding is a method of approximating line segment locations by creating a grid and placing each point in the centre of a cell (pixel) of the grid. The method preserves certain topological properties of the arrangement of line segments.

Drawbacks include the potential interpolation of additional vertices in line segments (lines become polylines), the arbitrary closeness of a point to a non-incident edge, and arbitrary numbers of intersections between input line-segments. The 3 dimensional case is worse, with a polyhedral subdivision of complexity becoming complexity O(n4).

There are more refined algorithms to cope with some of these issues, for example iterated snap rounding guarantees a "large" separation between points and non-incident edges.

Algorithm ... (please edit). See, Efficient Snap-Rounding with Integer Arithmetic, Binay K. Bhattacharya and Jeff Sember and https://www.cgal.org/ (CGAL Guide https://doc.cgal.org/latest/Snap_rounding_2/index.htmlCGAL Implementation https://doc.cgal.org/latest/Snap_rounding_2/group__PkgSnapRounding2Ref.html)

Properties Canonicity: Efficiency; A number of efficient implementations exist.

Conversely there are undesirable properties:

Non-idempotence: Repeated applications can cause arbitrary drift of points. Exception on "Stable snap rounding" algorithms, see https://doi.org/10.1016/j.comgeo.2012.02.011

See also Snap (computer graphics)

References