Unroll developable helicoid


I have modelized a beautiful developable helicoid with the sweep 1 rail command, taking a helix for the rail and a tangent line for the cross-section curve, result looks nice as the Gaussian curvature is null everywhere and isocurves looks close to a line and a helix, result is similar with rail revolve.

So far so good, the problem I encountered is when I tried to unroll this surface, the result is obviously completely wrong, starting by a warning explaining that there is 4.2% in surface increase (which is a little bit too much for one of the purest developable surfaces !), and result looking like a strange portion of a disk with a radius close, but not exactly equal, to the original tangent rule.

The correct result is obviously a disk with a circular hole inside, cut by tangents to this inner circle of lengths exactly equal to the original tangent rule.

A beautiful bug indeed! it should be of course corrected asap, but could it be possible that this whole class of developable surfaces could be affected? (the ones that are neither cylinders nor cones).

Bon courage! I would appreciate to be informed about the resolution of this nice error.

An attempt to unfold with the squish command is giving an even more strange result…

Please find joined a rhino file with the helicoid surface, the Rhino wrong unfold and a another one that I cooked myself from a mesh and looks much better.

Best regards,

JRayHelicoidDevelopable.3dm (123.5 KB)

Hi Jray,
Rhino has problems with NURBS surfaces if the u- and v-directions are parallel, which seems to be the case with your surface. You can avoid that by splitting of the most inner part of that helicoid. Maybe Rhino could do a better job regarding that problem.
I believe that a helicoid is not perfectly developable with respect to NURBS math. However it can be fabricated because the compound curvature concentrates towards the edge which can be stretched relativ easily.

Best regards, Jess
Helicoid_jm.3dm (175.8 KB)

I confirmed what Jess found.

To obtain the unrolled shape of the entire “helicoid”:
Split the surface close to the inner curve using the Isocurve option with Shrink=Yes
UnrollSrf the larger surface.
Measure the length of the straight edge of the smaller surface using Distance. Note: the needed length is along the edge, not the distance between the curves.
ExtendSrf the inner curved edge of the unrolled surface by the length of the straight edge.
Attachment with example: HelicoidDevelopable_DC1.3dm (200.8 KB)

Jray’s surface is “exactly” developable. (As close as is possible with the precision of Rhino’s math.) Sweeping a line tangent to a curve creates a developable surface.

The more usual definition of a helicoid is a surface formed by sweeping a line normal to the axis of a helix along a helix. That surface is not developable due to the shape (not NURBS math).

In my experience UnrollSrf works well with arbitrary developable surfaces with very few exceptions. Jray’s surface with U and V isocurves becoming tangent to each other is one of the those exceptions.

Thank you Jess and David,

Your suggestion is interesting as you’ve supressed a very small part of the problematic surface (an increase of just 0.005% of the inner radius), but it seems to produce already an acceptable result indeed.

It is not easy to visualise, and I won’t be able to prove it properly, but the fact that this surface is ruled and its min curvature is always positive is definitely implying that its Gaussian curvature is perfectly null everywhere… Jess’s image of Gaussian curvature analysis is typical of a numerical cheating as your pushing the min and max values to 10 power -15 which is close to numeric noise.

Unfortunately, I guess that it is not worth the work to solve this issue for just this particular case… would be interesting to test it in more sophisticated software to see if they are falling in the same trap.

Best regards
Jacques Raynaud

What software would that be?


Well, I could also provide other numbers :wink:

Of course this is also a bit misleading cause the analysis mesh is a single triangle over the whole width. However the compound curvature is there, but just along the inner edge.


Helicoid2_jm.3dm (73.0 KB)

However you turn it, the minimum curvature stays null everywhere, what is possible is that the maximum curvature tends towards infinity at the edge, and generate an indertermination of the Gaussian one, but that is not changing the developability, the situation is similar at the cone’s apex.
Here is a plot of the minimum (red) and maximum (blue) curvature along a rule, without the edge as we can see that the curvature is rising very fast.

I’m not interested in a discussion about theoretical developability :upside_down_face: From a practical view this surface is developable and Rhino fails to unroll it. I’ve shown a way how to make it work anyways and tried to explain where I think Rhino seems to have problems:

How was the minimum and maximum curvature obtained?

My guess is the Rhino curvature calculation algorithms become inaccurate as the angle between U and V coordinate directions approaches zero.