Curve ring - same width, constant distance

Hello,
i am trying to create a circular ring of curves which would have the same distance from each other. It is obvious from the attached picture.
I am trying to create a GH script in which I can change the inner/outer diameter and the amount of “ribs”-curves.
However I didn´t manage to solve the correct geometry of curve.
I am able to do it approximately-“by hand” in rhino but didn´t manage to solve it mathematically correct in Grasshopper.

Thanks a lot for your ideas.
Sergej

here is the picture

I think that the desired curve is part of the ellipse, however I didn´t find the geometric or mathematical principle of this problem.


crv_ring_2020Nov23a.gh (19.2 KB)

You want all these distances as equal as possible?

Thanks for your suggestions!
Yes, the distances should be the same or as equal as possible.

I have best results with the part of ellipse. - just by manual trial/error in Rhinoceros

Maybe there is a simple and elegant mathematical solution for this :slight_smile:

Per your suggestion, this model uses a section of an ellipse. The orange group is a curvature graph.


crv_ring_2020Nov23cc.gh (20.7 KB)

Ellipses are very special, well behaved curves!

1 Like

This version extends the elliptical curve section slightly so that each pair of offset curves will split a surface between the smaller and larger circles. The default Cull Pattern leaves gaps cut by those pairs of offset curves (that were surfaces before), so the gap edges are “parallel”. The surfaces may be wider in one area than in the ends? If you right-click the Cull ‘P’ (Pattern) input and choose ‘Invert’, the gaps become surfaces and the surfaces become gaps.


crv_ring_2020Nov23d.gh (22.6 KB)


crv_ring_2020Nov23ee.gh (26.2 KB)

1 Like

Hello Joseph,
you are awesome! Thanks a lot for your help. It works great!

Would it be possible to make all the curves parallel? I can make it only approximately by changing the sliders. What would be the best algorithm for this?
Is there a simple geometrical/mathematical solution?

My only idea is to use “brute-force” Galapagos to find the most parallel result.

Thanks a lot!