deffer at September 16th, 2004 07:42 — #1
I'm trying to come up with an alghoritm for generating a forest area(s).
For discreete 2D map, I have to determine, if there could be a tree standing on a discreete_map_point (for each of those points). Not too detailed by now. The program would just have to have a general idea of where the forest is, and where it is not.
I've had a few approaches to the problem:
- Generate a few points-of-attraction(PoAt). Those would represent centers of "forest pieces". For each PoAt, give it an efective range of influence. Then, for a point on the map, we sum up all the influences from all the PoAts and we can call this place a part of the forest, if it is higher than _some_border_value_.
So we end up with a few circles of trees.
- Let the PoAts have non-linear distibution of influence in their ranges. We could take, for example a function:
f(d) = -1/2*(d/R) + 1 and a border value of 1/2.
So one PoAt would behave just as before, but two PoAts, that are relatively close, would "help each other" and together they could produce a foresty-link between their base areas.
So we end up with a few circle-like-shapes of trees, that are really "attractors" to themselves. Of course, we can take more complicated functions, but that doesn't change the effect much.
- We could add a little random value, let's say (-0.1 .. 0.1), to the final (summed-up) influence. Then the areas don't look like ideal circles(or snowmen ) and are more rough on the edges.
I don't know, if I'm heading a good way, what do you think?
The code is really easy to imlement, even in ASCII-like graphic, so I'm not posting it here.
...And I still don't know, how to determine PoAts...
Any help is appeciated.
chris at September 16th, 2004 10:16 — #2
Really good methods to create areas of something are fractal methods.
Look into particle deposition, you should be able to adapt that to get nice results, GPG 1 had an article on it.
deffer at September 18th, 2004 09:25 — #3
Yeah, good point. I spent some time researching in that direction and it turned out that perlin noise functions can give exactly the shapes I was looking for.
Although it may be _too_ random for planning an overall forest shape, but with some modifications...
/def (still researching...)