I have been trying to find a quick path through Voronoi algorithm articles in order to find an approach that is right for me.
First the plan was finding a lazy way of creating a Voronoi diagram. Then my brain told me it wants an algorithm that can wrap around like Perlin Noise algorithms to create something tileable. I guess no matter how you twist it, it is complicated and I need to struggle throught the math part of it ... right?
My thinking was: I do not need to start with points. I want something random, but the only important thing is that I end up with a Voronoi Diagram and have some level of control over it.
I tried coming up with approaches like
- drawing circles / spheres that touch each other (but never intersect) and using the tangents / planes where the circles touch for the Diagram. I realize that if the approach makes sense at all (which I am not quite sure of) the result would be a special case and the algorithm could only create a subset of all possible diagrams, maybe boring ones!? Maybe it is even impossible to write the algorithm in a way that it will always terminate with a valid result. Maybe it is possible but the existing algorithms are more efficient for some reason. Does anybody know if those special cases exist and have a name?
- Starting with simple / regular special cases and using an armature (bones+constraints) datastructure to apply modifications that keep the Voronoi Diagram / Delaunay Triangulation quality intact ... maybe combined with a cellular automata approach in order to ensure a desired outcome.
- A combination - starting with circles that create quads and cubes at first and modifying them with an armature approach.
I want to be able to
- implement a solution that is out there
- or come up with my own solution
- and maybe evaluate the approaches I have mentioned above
Now I fear that there is no lazy approach and I need to look into the science that is out there.
What is a good path to conquer the topic in steps?
1.) Learning the terminology required to understand 2D Delaunay Triangulation
2.) Looking at different algorithms that create 2D Delaunay Triangulation diagrams and understanding them
3.) Figuring out how Voronoi diagrams can be derived from the Delaunay Triangulation
4.) Looking at the Sweep Line algorithm to create Voronoi diagrams directly
5.) Learning the terminology required to understand how to move from 2D algorithms to 3D algorithms
6.) Understanding how the above can be combined to create 3D diagrams
What resources are there that help with learning this stuff step-by-step?
I guess ...
- http://www.cse.iitk.ac.in/users/vision/dipakmj/papers/04276112.pdf ... will help with 6.)
- http://brianin3d-demos.appspot.com/static/demos/random/voronoi.xml ... will help with 1.)
... for example. And http://pcg.wikidot.com/category-pcg-algorithms should be helpful in general.
I have seen a lot more articles, but I find it hard to come up with a way to work through them efficiently.
Any resources you would recommend?
Can you recommend an approach?
Do you know of any out-of-the-box-thinking approaches that are documented somewhere?
Any general thoughts on what I wrote above?
Edited by DareDeveloper, 12 March 2014 - 02:44 PM.