Splitting a rectangle area into organic section.

Started by
6 comments, last by plainoldcj 10 years, 1 month ago
Hey there.

I'm willing to split a rectangle area into N part, forming an organic splitting of curved sections.

I'm searching an algorithm or a mathematic formula for this, but I'm lacking the exact words for such algorithm.

If anyone have an idea of what could be usefull for me, I just need a name so I can extend my researches.

An example of what I am thinking of :

[attachment=20510:splitting.png]
Here a splitting of a rect with a central zone and 6 others.


With regards!
Advertisement
Already thinking of a solution :

Placing the N points randomly in the area, then, when trying to get from which area are a coordinates in the area, check the distance and influence of each point.

Now, how could I randomly place the points avoiding to have several points too close to each other and decently filling all the space in the area?

Another option: start with points randomly distributed (but sufficiently far apart) on the edges of the rectangle, and draw a curve (as a smooth random walk or similar) from of each. Then, after a random length, split the curve into two and keep going, AND when two curves get sufficiently close to one another, make them attract each other until they connect. I think with some tweaking this could give some good results too. Then to work out which area a point is in you could use the even-odd rule with a few intersection tests or just a flood-fill algorithm, I don't know, maybe you don't even need that information. I think if you want to capture the wobbly curvy aspect you will need a lot of metaballs (which is basically what you're proposing, I believe), but I suppose it could work.

Just an idea though. Voronoi diagrams are nice too but they are not really organic as per your illustration, more like tilings, as they have straight edges.

“If I understand the standard right it is legal and safe to do this but the resulting value could be anything.”


Placing the N points randomly in the area, then, when trying to get from which area are a coordinates in the area, check the distance and influence of each point.

This is a good way to go, take a look at voronoi cells, it sounds like your approach and produces really good results.

I just want to give you the name voronoi diagram.
I've only seen the case where the "influence" of a point is the euclidean distance. That is, for each point p
of an input set you get a corresponding "section" (cell) which contains all points which distance to p is not greater
than to every other point of the input set.
So it doesn't actually fit your problem but I imagine there are other forms of the vornoi diagram which solve your problem.
Or maybe you find a way to make the borders fuzzy, don't know.
You're picture reminded me of this, so just use this term to google smile.png

Note, however, that most algorithms for voronoi diagrams compute a representation of the borders of the section, like a graph, for
instance. I could imagine that's not what you need.

If you just want to draw such sections, why not draw several predefined sections on top of each other? This should even work
with picking.
You could use metaballs to generate sections.

What are you trying to do, anyways? smile.png
Voronoi really looks like what I need! Thanks. :]

I'm trying to make a World map generator, using voronoi to have some Biomes, like minecraft biomes, the difference is, each biome must be uniform, unique and of closely enough size with each others.

Just imagine the Zelda : A link to the past's map. you got the lack on a corner, the desert on another, the mountain on the top and smaller areas. I'm trying to imitate such disposition from code, with randomness and without rectangular area.
A short code, some tweaks and here is my beautiful region from voronoi's algorithm plus a little "weight" variable for each region, wich generate some cute round curves. :]

I like it.

[attachment=20519:Capture d'écran 2014-03-19 15.18.55.png]
Wow, that was fast!

This topic is closed to new replies.

Advertisement