I wanted to mention another interesting and I think under-explored topic.
Readers may have gathered that I go for the obscure, but yet accessible.
ELASTIC INTERVAL GEOMETRY
I think its fairly easy to accept the notion of arbitrary nodes in space interconnected by various elastic elements that have a favorite length in the sense that they pull back toward it when elongated, and push back to favorite length when compressed.
It's a kind of "spring" action, where the student might have some control over exactly what function controls the degree of pull or push (a default is provided).
Picture a dispersion of points so interconnected. With each cycle of animation, all the pushes and pulls on a given point, coming from each spring thereto connected, get computed as a sum. These turn out to be simple vector sums, as visualizable as adding arrows.
When the push is really strong, the arrow is relatively long. The result of the sum is another arrow, showing where the node should move to next. The computer takes care of it all.
The result: Springie at
springie.com by Tim Tyler, check it out.
If you're not afraid to run Java jars, you can play with these structures.
Alternatively, another pioneer in the subject (EIG for Elastic Interval Geometry) is Gerald de Jong of the Netherlands. He's someone I've collaborated with, on Quadrays for example (remember that one? -- obscure!).
His Youtubes, one of which is entitled Darwin At Home, shows how he took Elastic Interval "creatures" and let them "train" in an environment that (A) provides traction (the ability for moving along the ground (B) rewards those creatures that move furthest, once traction is gained.
https://youtu.be/0RpQ1MsjZJ8(only 384 views as of today, get in on the ground floor about knowing something off the beaten track!). Gerald got a lot of attention in the art world. You can Google up a lot more. Gerald puts a lot into this Youtube, especially when you remember all the animation is from his own EIG engine. Then he adds music and voice-over ("You're watching math!"). A worldview is unfolding before our eyes.
Gerald was a math major at University of Toronto, was doing C++ programming then joined in the leap to Java, indeed an improvement in coder productivity and code readability. Gerald's engine, like Tim's, is in Java. I met him a couple times when he flew to the US west coast to be a part of the early JavaOne conferences. We're friends on Facebook.