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:
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:
Initialization:
Simulation: