Snap rounding is a well known method for converting arbitrary-precision arrangements of segments into a fixedprecision representation. We point out that in a snap-rounded arrangement, the distance between a vertex and a non-incident edge can be extremely small compared with the width of a pixel in the grid used for rounding. We propose and analyze an augmented procedure, iterated snap rounding, which rounds the arrangement such that each vertex is at least half-the-width-of-a-pixel away from any non-incident edge. Iterated snap rounding preserves the topology of the original arrangement in the same sense that the original scheme does. However, the guaranteed quality of the approximation degrades. Thus each scheme may be suitable in different situations. We describe an implementation of both schemes. In our implementation we substitute an intricate data structure for segment/pixel intersection that is used to obtain good worst-case resource bounds for iterated snap rounding by a simple and effective data structure which is a cluster of kd-trees. Finally, we present rounding examples obtained with the implementation.
- Geometric rounding