Jump to content

  • Log In with Google      Sign In   
  • Create Account

FREE SOFTWARE GIVEAWAY

We have 4 x Pro Licences (valued at $59 each) for 2d modular animation software Spriter to give away in this Thursday's GDNet Direct email newsletter.


Read more in this forum topic or make sure you're signed up (from the right-hand sidebar on the homepage) and read Thursday's newsletter to get in the running!


Splitting a rectangle area into organic section.


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
7 replies to this topic

#1 Spidyy   Members   -  Reputation: 180

Like
0Likes
Like

Posted 19 March 2014 - 05:17 AM

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 :
 

splitting.png
Here a splitting of a rect with a central zone and 6 others.


With regards!

Sponsor:

#2 Spidyy   Members   -  Reputation: 180

Like
0Likes
Like

Posted 19 March 2014 - 05:24 AM

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?

#3 Bacterius   Crossbones+   -  Reputation: 9289

Like
0Likes
Like

Posted 19 March 2014 - 06:10 AM

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.


The slowsort algorithm is a perfect illustration of the multiply and surrender paradigm, which is perhaps the single most important paradigm in the development of reluctant algorithms. The basic multiply and surrender strategy consists in replacing the problem at hand by two or more subproblems, each slightly simpler than the original, and continue multiplying subproblems and subsubproblems recursively in this fashion as long as possible. At some point the subproblems will all become so simple that their solution can no longer be postponed, and we will have to surrender. Experience shows that, in most cases, by the time this point is reached the total work will be substantially higher than what could have been wasted by a more direct approach.

 

- Pessimal Algorithms and Simplexity Analysis


#4 Ashaman73   Crossbones+   -  Reputation: 8001

Like
3Likes
Like

Posted 19 March 2014 - 06:18 AM


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.



#5 plainoldcj   Members   -  Reputation: 850

Like
2Likes
Like

Posted 19 March 2014 - 06:28 AM

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

#6 Spidyy   Members   -  Reputation: 180

Like
0Likes
Like

Posted 19 March 2014 - 06:51 AM

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.

Edited by Spidyy, 19 March 2014 - 06:56 AM.


#7 Spidyy   Members   -  Reputation: 180

Like
1Likes
Like

Posted 19 March 2014 - 08:22 AM

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.

Capture d'écran 2014-03-19 15.18.55.png

#8 plainoldcj   Members   -  Reputation: 850

Like
0Likes
Like

Posted 19 March 2014 - 08:53 AM

Wow, that was fast!




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS