Topology-oriented incremental computation of Voronoi diagrams of circular arcs and straight-line segments ?
We introduce an algorithm for computing Voronoi diagrams of points, straight-line segments and circular arcs in the two-dimensional Euclidean plane. Based on a randomized incremental insertion, we achieve a Voronoi algorithm that runs in expected time O(nlogn) O ( n log n ) for a total of n n points, segments and arcs, if at most a constant number of segments and arcs is incident upon every point. Our theoretical contribution is a careful extension of the topology-oriented approach by Sugihara and Iri in order to make the incremental insertion applicable to circular arcs. Our main practical contribution is the extension of Helds Voronoi code Vroni to circular arcs. We discuss implementational issues such as the computation of the Voronoi nodes. As demonstrated by test runs on several thousands of synthetic and real-world data sets, this circular-arc extension of Vroni is reliable and exhibits the average-case time complexity predicted by theory. As a service to the community, all circular-arc data sets (except for proprietary data) have been made public. To our knowledge, this enhanced version of Vroni constitutes the first implementation that computes Voronoi diagrams of genuine circular arcs on a standard floating-point arithmetic reliably and efficiently, without resorting to some form of approximation or sampling of the circular arcs.
voronoi diagram circular arcs straight-line segments algorithm topology-oriented approach implementation computation of voronoi nodes experiments test data