# Paper shapes: Moving vertices dynamically with fixed length bezier edges (curves)

I have been trying to recreate paper shapes (not by modeling but rather parametric with grasshopper). The edges of the “paper” should be moveable or dynamic. The only condition of the surface is that the edge length needs to stay the same while moving the vertices. Like if you did in reality. Has anyone done this before and if yes what was your concept? I do not even know how to start…

It’s more complicated than that. Tangents at the edge endpoints must remain square to each other and surface area must remain constant. It’s a difficult problem to model, I’d love to see a solution.

@jsbzh Do the paper shapes have flat faces with sharp creases, or are they curved?

If the shapes have flat faces with sharp creases then it may be possible to create such shapes by specifying the line of a crease, splitting the surface along the line, and then rotating one part of the split surface using the line of the crease as the axis of rotation.

If the shapes are curved then the problem is much more difficult. The deformed surface needs to be developable, ie a surface with single curvature which means the Gaussian curvature is zero. Other properties of developable surfaces include the area, length of edges and angle between any intersecting curves on the surface remain unchanged when the surface is unrolled to flat.

Unrolling a developed surface to flat is straightforward and Rhino provides two commands to do so; UnrollSrf and UnrollSrfUV. I assume Grasshopper has similar capability.

Going the other way from a flat shape to developable shape is much tougher, particularly if two or more flat panels are to be deformed so that they match along edges; such as in “stitch and glue” boatbuilding. I’ve seen requests for a method to do this but have not seen any solutions.

So this is my sketch:

As you can tell I am checking the length manually atm.

I was also thinking about cloth—and switching to like Blender or zBrush. But since I have been working with rhino for the most part I wanted to ask you guys first if it is even possible without like building a mega node. Also I am not sure whether the other apps can do it…

Edit: I forgot to mention that I use 5 points/vertices for each edge. At the moment they are almost linear/on one line. But I can also move them manually. But as I said… I want to fix the length (and of course as you guys mention the area) somehow…

Edit2: The corner points are used for two edges and the bottom curve/edge is straight due to the project properties.

Here is another “sketch” that uses 90 degree corner brackets (piped in white for visibility). One of them is rotated around the diagonal line and further rotated around its own vertex, then all are connected with Connect Curves to form surface edges. No attempt is made to preserve edge lengths, as you can see in the ‘Edge Lengths’ text panel.

PaperShape_2021Jan9a.gh (32.3 KB)

It’s rather complicated to move just one corner (cyan group), let alone allow other corners to lift and move on their own. Maybe a job for Kangaroo?

1 Like