Search code examples
algorithmgeometry2dcomputational-geometryvoronoi

Fortune's algorithm and circle as sweep line


I think it is possible to formulate Fortune's-like algorithm, but using circle instead of straight line as sweep line.

Say, "circle event" remains "circle event" and point event definition will slightly changed.

What also changed is binary tree implementation, but slightly. It became "binary tree mod 2 * pi" in some sense.

Parabolas from the original algorithm's wording are ellipses with one of two foci moved to infinity from their directrixes and so on similarly.

Are there any impediments for reformulation the algorithm definition in terms of circles and polar coordinates? Can it be generalized to higher dimensions?

N.B.: metric is sqrt(x * x + y * y).

ADDITIONAL:

I tried to infer equation for equidistant points from circle and the point that lies inside the circle. For point (a, 0) and circle center = (0, 0), radius = r the formula is rho = (r * r - a * a) / (2 * (r - a * cos(theta))). According to Wikipedia's article about ellipse the form of this inffered equation matches form of ellipse equation in polar coordinates relative to focus. Plot (slightly warped) visually demostrates correctness of this my conclusion:

beach line front arc r = 1, a = 0.9

beach line front arc r = 1, a = 0.3333

For a == r (point lies on beach line) this ellipse becames (degenerates to) a line segment or, equally, radius, similar to corresponding ray from "point event" of original Fortune's algorithm wording.


Solution

  • There are two papers that I know of which describe a sweep circle approach to compute a Voronoi diagram in 2D. The second one "Parallel computing 2D VD..." also shows benchmarking results of their implementation. Unfortunately no link to a source code is provided, if you are looking for something like this.