Mathematical Animations

Last weekend I went to Bossa n' Stones' concert here in Panama. Since their music is considered Electro-Bossa, for whatever that means, the opening shows were performed by a Jazz Fusion local band (mostly conformed by the excellent musicians from Roots and Culture) and a local DJ whose name I didn't get because I spent most of that time at the cell phone. When I came back from my eternal call, I looked at the screens and saw something very funny: There was some kind of psychedelic animation which was actually made of rapidly moving conical sections. The order in which they moved and transformed from one conical section to another was actually very familiar to me, so unlike most music visualizations I've seen on software like Winamp and Windows Media Player, this was one very easy to crack.

The animation actually consisted of invisible static circles plus an invisible moving circle and a continuous application of a polar transformation of the static circles with respect to the moving one. That made me think on how we have outcasted geometry, in all of its ever varying forms, from most of the subjects in modern technology courses and I think it could be extremely useful to teach higher geometry in computer graphic courses to expand students' minds on how much cool stuff can be done using pure and applied math.

Anyhow, I created a small sample code for you all to have an idea of what the animation looked like. To compile and run this code, you'll need usual development files for OpenGL, then run (assuming you are wise enough to be using any Unix-like system with g++ and you downloaded the code to a file named ProjectiveAnimation.cpp):

g++ -o ProjectiveAnimation -lGL -lGLU -lglut ProjectiveAnimation.cpp
./ProjectiveAnimation

Code should be portable to any standard C++ compiler but I haven't tested that. Bear in mind that this animation is significantly slower than what I saw last weekend, but gives you an idea of what I saw. If you want to see the invisible circles involved in the calculations, uncomment the circle calls that appear commented in the code.