Create Developable Surfaces?

I would like to create developable surfaces (aka single-curvature or, apparently, gaussian surfaces) within Rhino (7 or 8) using a single command that I am unable to find. This would be helpful for creating, for example, windshields or plywood forms.
On your page about surfaces (UnrollSrf | Rhino 3-D modeling) you state “Since developable surfaces cannot be created from just any two curves, results from a developable style loft can be unpredictable. Curves of similar shape without kinks work best.”
I don’t think this is true. I think developable surfaces can be created from a range of substantially different curves. The trick is to provide straight guidelines between points on the two curves that have equal slope. For example, an ellipse may be joined to an offset but parallel circle with a developable surface. By connecting points on the two curves where slopes are equal, and using these connecting lines as guides, a developable surface can be made. A square may be connected to a circle by connecting the square’s corners to the perimeter of the circle, along with connecting the quadrants of the circle with the edges of the square. The resulting shape is developable. I believe this method can be extended to non-planar and (obviously) non-parallel curves.
I am happy to provide examples if this is helpful.

Rhino has several commands for creating developable surfaces.

DevLoft is a Rhino 7 and Rhino 8 command which creates developable surface from two input curves.
https://docs.mcneel.com/rhino/8mac/help/en-us/index.htm#commands/devloft.htm

DevSrf is a free plug-in from McNeel which works in Rhino 6, Rhino 7 and Rhino 8. It creates developable surface from two input curves.

Developable surfaces can be created between a broad range of pairs of curves, but not all pairs of surfaces can be connected by a developable surface. When a developable surface exist between two curves the developable surface may or may not extend to one end of one or both curves.

My guess is the quote from UnrollSrf help goes back to when the Loft command had a developable surface option in Rhino 5 and previous versions. That option in Loft was deleted starting with Rhino 6.

A method for determining exact ruling lines for developable surfaces between pair of curves:

True if the curves are co-planar, but generally not true depending on how equal “slope” is defined for a pair of non-planar curves.

David,

Thank you for your attention to the topic of developable surfaces.

First I want to say that I am no mathematician, and my geometry skills are modest. i am astonished at what Rhino is able to do and I love the program. Thank you very much. The following is intended to be a possible contribution.

I spent some time last night experimenting with generating developable (single curvature) surfaces. The following steps through my process. Key point: I believe that there is a good way to make developable surfaces from pairs of unrelated non-planar curves. This is shown in the last example.

The following may be overkill. But that is my stock-in-trade, so this is what you get!

Step 1: planar circle to planar, offset square. This should be formable with curve network but I had to use “loft” in segments. But the surfaces are good. When joined, they can be unrolled (unrollsrf) as shown.

(Attachment PastedGraphic-1.tiff is missing)

(Attachment PastedGraphic-2.tiff is missing)

(Attachment PastedGraphic-4.tiff is missing)

(Attachment PastedGraphic-5.tiff is missing)

(Attachment PastedGraphic-7.tiff is missing)

(Attachment PastedGraphic-8.tiff is missing)

(Attachment PastedGraphic-10.tiff is missing)

(Attachment PastedGraphic-9.tiff is missing)

(Attachment PastedGraphic-11.tiff is missing)

20240319 Rhino Developable Surfaces Experiment.3dm (3.07 MB)

David,

Thanks for your reply.

I spent some time last night experimenting with methods to make developable surfaces. Today I prepared an email report for you of those experiments. I just mailed this to you, along with the Rhino file used. Your system rejected my message.

The email had about 10 captured views as well as the file itself.

The key thing is that the note includes a detailed description of a method to generate developable surfaces from two non-planar, unrelated curves. This is rigorous and repeatable, but very laborious by hand. I think it could be automated within Rhino as a surfacing command.

How can I share this with you?

Thanks for your attention.

Blaine Rawdon
Riverside, CA

The conical sections and planar triangles surfaces is a standard method for creating a transition between a square or rectangle to a circle or ellipse.

Can you post it here?

David,

Thank you for your attention to the topic of developable surfaces.

First I want to say that I am no mathematician, and my geometry skills are modest. i am astonished at what Rhino is able to do and I love the program. Thank you very much. The following is intended to be a possible contribution.

I spent some time last night experimenting with generating developable (single curvature) surfaces. The following steps through my process. Key point: I believe that there is a good way to make developable surfaces from pairs of unrelated non-planar curves. This is shown in the last example.

The following may be overkill. But that is my stock-in-trade, so this is what you get!

Step 1: planar circle to planar, offset square. This should be formable with curve network but I had to use “loft” in segments. But the surfaces are good. When joined, they can be unrolled (unrollsrf) as shown.

PastedGraphic-1.tiff

In the second example I tried to use “curve network” but again, the corner point prevented that. So back to “loft” and join surfaces. Still developable as shown by the developed surfaces.

PastedGraphic-2.tiff

This example joins quarter circle to a quarter ellipse. Guidelines are made every 10 degrees by drawing a fan in the plane of the curve plus lines perpendicular to two curves (red) to find the point on the curve with the desired slope. Shown here in wireframe. The resulting surface is developable as shown in orange.

PastedGraphic-4.tiff

This is the same as above but the surface is hidden and the guidelines are visible. The surface was made using “curve network”.

PastedGraphic-5.tiff

This example uses two semi-random planar curves whose planes are parallel and offset. The method of the ellipse above is used to find points with common slope. The key thing here is that here may sections of one or both curves that don’t have equal slopes. The solution is to surface out from a point to the slope. This occurs twice in this surface as shown in the following view capture. This surface is developable.

PastedGraphic-7.tiff

This view capture shows the center portion of the surface which has slope congruence. The outer triangles don’t correspond but the resulting triangular surfaces are still developable.

PastedGraphic-8.tiff

The last example makes a developable surface between semi-random, non-planar surfaces that are offset. This is harder to describe so I take my time in the spirit of overkill…

  1. Draw an “orientation line” between the two curves that defines the point of view for defining “equal slope”. This line is red in the drawing below

  2. A plane (or coordinate system) is defined perpendicular to the orientation line. This may be offset beyond the two curves.

  3. The two non-planar curves (shown in black) are projected onto the planes (or CS) as seen in orange. These resulting orange curves are planar.

  4. Repeat the methods from the prior examples to define points of equal slope on the planar curves.

  5. Run lines perpendicular to the CS back to the non-planar curves to create points of “equal slope” on the non-planar curves.

  6. Connect corresponding points on the two non-planar curves to create guidelines for a developable surface.

  7. Surface between the two non-planar curves using the guidelines. In this example, some could be done with curve network; triangular surfaces needed “loft” as before.

  8. The joined surfaces are developable as shown in the second picture below.

PastedGraphic-10.tiff

Here is a view of the resulting shaded surface and the developed surface.

PastedGraphic-9.tiff

This is a wireframe of the developable surface. You can see that this took four triangular surfaces to complete. These would be smaller if the angular steps were smaller than 10 degrees. These triangles result from the angular range of one curve exceeding the range of the other’s.

PastedGraphic-11.tiff

Conclusion: it is possible in Rhino to create developable surfaces from two unrelated, non-planar curves. The key step is to define an “orientation line”. The problem with this method is that it is laborious. Furthermore, the quality of the resulting surfaces depend on the angular spacing of the points. It is increasingly laborious to space the points more tightly.

I think it would be great if Rhino could provide this capability with a command sequence. This might be: 1) Create developable surface from two curves. 2) Pick first curve. 3) Pick second curve. 4) Pick a reference point on the first curve (to define the beginning of the orientation line). 5) Pick a reference point on the second curve (to define the end of the orientation line). 6) Go — BOOM! Done. That would be very useful to people building things with sheet materials such a glass, plywood, sheet metal, plastic, and so on.

It may be that some curves don’t work very well. I think these might benefit from division into two or more separate curves. Developable surfaces between these divide curves could be created using separate orientation lines.

I have attached the example file to this note so you can play with it. The five examples are on six layers in order of the examples above. The fourth example is on two layers - 4 and 5.

Images from the writeup above, in order:




!!

![image|690x452]
(upload://2CbnyLAz7nhrZQ19p67MRXmVaey.png)



Thank you to David Cockey. “devloft” appears to work. I tried it on the last example above. It truncates the triangle at the right edge, but otherwise lines up very closely with the “hand-made” version. So thank you and I hope this hasn’t wasted too much valuable time… It would be nice if these obscure commands were easier to find…