Thu, 25 May 2006
First Principles: Elastic Interval Geometry
« Why the Un? | Main | Growth! » Posted by at 9:21 PM in Code
One main goal of the Fluidiom project, and the Struck project that led up to it, was to keep things as simple as possible. Spatial structure in general was something I wanted to create, but it also had to be space in the common sense interpretation of the word, which includes time.
The simplest thing we can imagine in space is a dot, and we can easily imagine a kind of constellation of dots in space, like a cloud. In order for the cloud to be a structure that has some meaningful behavior in time, there has to be relationships among the dots, and the simplest kind of relationship is pairwise.
So a long time ago I started playing with data structures that carried these numbers and their relationships. I made the pairwise connections among the dots aware of a desired distance called "span", and made them springy by letting the vectors push if actual distance was too small, and pull if actual distance was too large. Hooke's Law, with its linear rigidity factor.
With such constellations of dots (joints) connected with springy things (elastic intervals), the only missing ingredient was time, so the software perpetually iterates through the structure to let the vectors do their work.
- Visit all intervals, letting them exert outward or inward forces
- Visit all joints, having them move according to the accumulated forces upon them
- Repeat
The joints and intervals connected together was called a "fabric". With this simple data structure and iteration algorithm it became possible to build an editing program in which people could build these structures and play with them to see how they behaved.
The funny thing is, it was a number of years before I started to play with the genetic algorithm that was to lead to Darwin@Home.