Going to do two posts today! To exchange for the Jointometer post, I’m going to make this one a lot shorter.
LineCircles is a harmonograph. If you don’t know what a harmonograph is, I strongly suggest you go and do some Google searches, because they are fantastic. Here’s the video which got me into harmonographs:
In fact, the first harmonograph I ever coded was a direct implementation of the harmonograph featured in this video. I used to turn it on, let it run overnight, and see what it had drawn the next morning. It wasn’t long before the fact that I was on a computer, not in material reality got the better of me and I started improving the program dramatically, but I’ll save that for, perhaps, a later blog post.
Of all the harmonographs I’ve produced, LineCircles is by far my favourite. I actually had the original concept for it seeded by a YouTube video I had watched. It was obscure enough that I absolutely can’t find it again – but the point was that the idea was good, but the implementation was terrible – it produced ugly images.
I spent an evening reimplementing the concept into Processing and significantly expanding the customisability of the patterns, and wound up with something pretty cool – it produced images much faster than the other harmonographs I’d produced, and the images themselves were constructed in a different way – watch the video of LineCircles and you’ll see what I mean.
The big turning point for LineCircles was the automatic randomisation function I built in – every 10 seconds or so, it fades the screen to black, shuffles all the variables intelligently, and starts again. This made the program go from a situation where I had to twiddle values for 5 minutes to get a 10-second payoff of a nice pattern to one where I could just sit and watch…and watch…and watch…
I have literally sat and watched LineCircles for hours straight before
I’ve been incrementally improving LineCircles for ages now – at this point I’ve gone about as far as I can go in Processing. I’ve almost finished the reimplementation of LineCircles in C# within Unity (using a generative mesh rather than drawing primitives additively to the screen – this means I can go into 3D and display the mesh in VR!) – it’s currently at the top of my list of things to do. (In fact, I might finish it up tomorrow)
The Processing version of LineCircles is available for download at the project page – I should have the Unity version up and running soon. The Unity version gives me a lot of room to scale this project up, so stay tuned!