How to grow/expand curves (polygons) until touch each other

Hi @Pilsprinz,
Having two daughter-in-laws from Addis Ababa this post caught my attention. :slight_smile:

I would consider “implicit surfaces” for this. This is due to the fact that you actually want “organic growth” and, this is important, so many different growth factors can easily be incorporated into the “strength” or “energy fields” of the points forming surfaces and it’s boundaries.

Think of points with “strength” or “energy fields” normalized to values between 0…1 with diminishing strength according to radius, like so:

bild

When two or more points are close and thus contributing to a certain strength (in an area) then you have a surface based on “intersecting forces”, like water drops adding up to gradually bigger puddles.

Jumping directly past the surfaces and their boundaries (works fine also in 3D) - consider what the “forces” making upi the surfaces could consist of (apart from the distance to each other) where every factor is normalized and added to each point’s “forrest growh strength potential”;

Distance (to next point)

  • Existing plants
  • Soil quality
  • Rain / Period
  • Height above Sea level (mesh.Vertex[ix].Z …)
  • Erosion
  • Time
  • … you name it.

= Growth potential at each point = implicit surface.

:slight_smile:

When summing up all the factors at each point, combining explicit surfaces (GIS) with your scaling factors and play it with time, then you (implicitly) have the growing surfaces and its boundaries in all directions. Or growing deserts in the Afar region) :slight_smile:

Changing in “realtime” any of the factors making up for the “strength” of each point to make live simulations demonstrating the relative influence of these factors and… possibilities are endless. Have a look at the first part of this clip (three topics, starting with Implicit Surfaces):

Somewhat related, but perhaps not an introduction (the concept is dead simple, an trees can be obscured by entire forests…)

Hope this gives you some inspiration.

// Rolf

1 Like