2

I've read about the algorithm in "Two algorithms for constructing a Delaunay triangulation" by D. T. Lee and B. J. Schachter, International Journal of Computer and Information Sciences, Vol. 9, No. 3, 1980. I don't quite understand how to implement the part in the merging stage where you need to find the common lower and upper tangent between the two halves. Do I need to construct a convex hull for both halves, where the vertices are sorted in clockwise or counter-clockwise order, and if so how can I manage to do that whilst recursively computing the Delaunay triangulation without exceeding O(nlogn) time. Is it maybe possible to do both simultaneously in a recursive manner, am I on the right path?

Cauchy_boi
  • 21
  • 2
  • 2
    The convex hull comes "for free" with the Delaunay triangulation. For a well-detailed implementation, refer to https://www.researchgate.net/publication/221590183_Primitives_for_the_Manipulation_of_General_Subdivisions_and_the_Computation_of_Voronoi_Diagrams. Upon first reading, you can consider skipping the lengthy description of the topological representation they use (which is the main topic of the paper) and jump to section 9. –  Feb 26 '22 at 17:56
  • @YvesDaoust I think I need a more complex data structure, like the one present in the article you linked? I thought I could get away with something like an adjacency list implemented via a hash table of doubly linked lists, maybe even sorted lists? – Cauchy_boi Feb 26 '22 at 19:30
  • You can use the full structure of the article, but that is a little overkill; instead a winged-edge will do (maybe even a half-edge, but I am less sure). I recommend that you follow the paper rather than trying to tinker your own solution. –  Feb 26 '22 at 19:49
  • @YvesDaoust Do you know what does the procedure Splice do, it seems to depend on the structure present in the paper you linked, and I'm unsure how could I make it work with a winged-edge structure? – Cauchy_boi Feb 27 '22 at 13:08
  • The Delaunay triangulation is orientable, so the half-edge representation will work. The key idea here is that vertices are represented implicitly as the head vertex of a half-edge (and faces as the right face of a half-edge) because Splice can't be constant time in general with an explicit representation. The quad edge structure is a particularly beautiful way to capture the symmetry. (Splice is just a swap on the next-half-edge permutation.) – David Eisenstat Feb 27 '22 at 17:27

0 Answers0