Curve growth? Organic "parallel" curves on surface

Hi everyone,

I would like to have a group of curves on a surface, the curves must flow in the Z direction projection and be equally distributed by a separation which is input (target distance between curves). That means that as the surface domain grows/shrinks, new curves need to appear/collapse. The behaviour is that the curves do not have ramifications, but rather new curves appear in between other curves. The target surface is a revolution surface with variable radius (around Z axis).

The term curve growth seemed that could be what I was looking for, but I didn’t find something that resemble my objective.

Any idea how to generate such pattern?

Is this what you are looking for ?

Or, some curve dividing and tree structure shinanigens…

GrowingCurves.gh (14.5 KB)

2 Likes

This is also quite similar but it is not curves and distance is not really controlled but is controled by diffusion parameters and mesh edge size.

Also related to that
https://www.cs.cmu.edu/~kmcrane/Projects/StripePatterns/

1 Like

Actually, this is close to what I am looking for. However, the method of subdividing and finding the closest point for several sections produces some wobbling in the curves, which ideally should be minimised.

Maybe a starting point for some optimization using Kangaroo or something similar?

Thank you Laurent. Is there any code or file to look at in the post you shared?

Actually, that link (strip pattern on surfaces) has some interesting stuff and close to what I am after:

I will dig more.

Or find a better way to populate points (only using multiples of the same value like 3,6,9,12… per row to ensure some straight directions are preserved). And remove the random seam positionning to start with.

Or rebuild the curves at the end / reduce polylines to a certain amount of significant vertices.

I think you have more than enough material to think about right now !

1 Like

To do the same just search directional recation diffusion
Nautilus plugin has this tool and some examples

1 Like

It is also possible to generate many curves, here I use my geodesic tool with a Z direction as start, then use Geodesic Curve From Point. I improved it in order to have geodesic continuing on the borders but here it is not beautiful.

You need Nautilus plugin. the others plugins used here are not mandatory.
GrowingCurvesCleanOverlapping LD.gh (15.5 KB)

reaction diffusion works well


GrowingCurvesCleanR&DLD.gh (14.3 KB)
Variation of kill 0.05 to 0.075, 1000 or 2000 itterations

2 Likes

Bonjour, great work as always. I have an ignorant question, is there an option to produce curves for the boundary areas, instead of a mesh with elevations? I could generate a surface, intersect it with the mesh, and extract the intersection curve, but thought there might be an easier way

I am not sure of your question but if it is for mesh iso splitting, yes there is a component that outputs curve instead of mesh


I hope to have a component that will output more smoothed results.

The work of Laurent is always inspiring. For a different approach I would like to suggest using shortest walk algorithm with the rim vertices at the top as your path ends. Contour the shape/ extract iso curves in the z direction and subdivide each contour by distance so the number of points is informed by your topology, then use said points for the network. Sort by length, remove duplicates and delete the lowest point of each branch to disconnect each branch.