
It does seem to create a triangulation as you can see here: http://chezphil.org/tmp/delaunay.png
Nice! I spend a lot of time to decouple voronoi_builder and voronoi_diagram data structures. Now you can see benefits of that. - Again you're using void* in here, which doesn't look great. Is this just
to break circular references, or something? Why can't you use the actual types?
Correct, those are required to keep builder and output data structure decoupled. Basically builder doesn't know anything about output. - Your "builder" class, which just forwards to the other class, doesn't
seem very useful to me. I can see the idea - you're breaking the "lifecycle" of the object into a "build" phase and then a "use" phase - but I think there are probably better ways to do it if it's worth doing at all.
The main point was to hide construction methods from the user. I was considering to split voronoi_diagram onto two classes: voronoi_diagram itself and voronoi_diagram_builder. But ended with a Java-like implementation and I actually like it. Anyway, I think you potentially have something very useful here. Thanks! Glad to hear! The library was designed in such a way that each entity is independent and could be substituted by the user provided implementation. This includes: coordinate types, predicates, algorithm itself, output data structures. Regards, Andrii