In the previous section, we took our physical model, and did some technical computer work to place it in a context where it is possible to percieve data in an extra dimension.

In this section, we will then experiment with ways in which we can use these tools to control the curvature of a geometry as it relaxes. In performing these experiments, we will draw from a few different sources of inspiration.

One is the emerging field of Discrete Differential Geometry, which seeks to define ways of measuring curvature in a setting where all the pieces of your geometry are locally triangles in a mesh.

Another perspective is furnished by the concept of zippergons, i.e. that you can make technically “flat” manifolds look a lot like they have curvature by stepping away from the study of polyhedra. One cute application of this idea is the 2014 World Cup Ball.

Finally, there are some rich explorations going on following the line of thought set out in D’Arcy Wentworth Thompson’s On Growth and Form. In particular, my favorites of these are the following two explorations:

With that literature review considered, let’s build our first demo, of a single node with variable curvature.

A great intuitive treatment of curvature can be found in Experiencing Geometry by David Henderson. He has also released a more advanced differential geometry book for free.

The purpose of this demo is to give one a sense of how changing the ratio between the length of the circumference and the radius can influence global geometry. This sort of demo fits well into the system we have created so far because it allows us to establish a desired “curvature”, but allows the system to find it’s own balance. If you are trying to relate this demo to other materials on the subject, note that the slider having a value greater than 1 gives the surface *negative* curvature, and values less than 1 have *positive* curvature.

Initialization:

Simulation:

Things to think about:

- Experiement with moving the slider to values that are less than 1. What is the resulting shape? Is it what you expect?
- Try reducing the number of nodes (exp.n in the initialization script). What happens? Is it what you expect?
- The phenomenon being modeled here appears everywhere in architecture. A room with a corner where 5 walls meet at 90 degree angles has negative curvature, and a corner where 3 walls meet has positive curvature.

In this section we finally arrive at the place we set out for - to make a computer draw a leaf (of sorts). This is however merely the shoreline of a rich island of thought. More detailed trailmaps have been produced by L. Mahadevan and P. Prusinkiewicz (among others).

Here though, we set out to control the curvature of a plane by building a “fabric” with multiple nodes like the ones in the above example.

To achieve this, we will persue the following implementation to generate a suitable mesh:

- Randomly place points in a square.
- Add control points.
- Get a Deluanay Triangulation of our point cloud (fun fact, the deluanay triangulation is the dual of the Voronoi Tessellation used in the sidebar on this site).
- Use the curvature approach from above to manipulate our fabric.

Initialization:

Simulation: