BitDancer

By Robin Nixon

robin@robinnixon.com
The initial concept behind this program was to find a way to iterate through irrat­ional numbers in binary to see whether any hitherto unrecog­nized patterms could be found.
   Obviously, the way numbers that follow a decimal (or binary) point work, is that each sequent­ial digit is a factor of the base smaller than the previous one. In decimal the digits after the point are 10ths, then 100ths, then 1000ths and so forth, while in binary they are halfs, quarters, eighths, and so on.
   Therefore, to examine these sequences of numbers for patterns in any meaning­ful way, the relation­ships of scale between each binary digit (bit) to the ones before and after it needed to be taken into account.
   But with fraction­al numbers scaling down in size so quickly, any visualiz­ation would rapidly dwindle down in size, so I needed to find another way of giving a relation­ship to the numbers, and decided to construct a model in which each bit is linked to the next by a line, and I would use differ­ent move­ment values to repres­ent scale.
   However, because all lines would other­wise be the same length, there would be little indic­ation of bit values them­selves (or at the most, lines of only two differ­ent lengths for the digits 0 and 1). So I chose to make the lines longer when­ever strings of two or more of a bit appear­ed in sequence - the longer the sequence, the longer the line.
   Then, to indicate how the lines relate to each other, I chose to rotate each subse­quent line by a small amount relative to the previous one.
   And to avoid the result­ing model overly wrapping around on itself, I made every altern­ate rotat­ion go in the reverse direc­tion. And that is essential­ly what you see here.
   If you examine it closely, you'll see that the model comprises a long chain of lines connect­ed at 'hinges', each rotated a little bit more than the previous one, and with each subse­quent line altern­ating between using a clock­wise or counter-clock­wise direc­tion for rotation.
   To make things even more interest­ing, I chose to animate the result by placing the model in a loop, in which the rotation amount slowly changes over time.
   The reason for this is that one partic­ular degree of rotat­ion might show more of a pattern than another. Plus, to test my theory that there may be patterns yet undis­covered, it would be neces­sary to test all the possible angles of rotat­ion anyway.
   A few additional tweaks later, such as adding in a camera view­point that tracks the model, zooming in and out to keep as much of the anim­ation in full frame view as possible (with a moving and zooming back­ground too), line thick­ness and alpha trans­parency depth cues, and finally some key­board cont­rols, and the program was complete.
   Sadly, though, it seems that the four irrat­ional numbers I have so-far tested (π, e, the golden ratio, and the square root of 2) have not yet yielded any discern­ible patterns (up to 512 bits), other than amaz­ingly complex and beaut­iful examples of 'chaos' in action.
   Anyway, to see what would happen if a pattern were found, I performed a final tweak to the program that made it able to create strings of binary from repeat­ed random sub­strings. The results blew my mind with the symmetry that emerged, in what I can only describe as an ever-changing 'dance' (as you can see), that even displays 3D effects (with no 3D algorithms).
   So now it looks as if, by using this tech­nique, if there are any patterns in irrat­ional numbers, they could well be detect­able via this process, although not the first 512 bits of the ones I have tested so far.
   However, by adding more and more bits, patterns may emerge further down these numbers, and I have versions of the program that go up to 250,000 bits. They run quite slowly, and I haven't seen anything note­worthy as yet. But who knows whether even further along, the numbers may exhibit interest­ing effects.
   Or maybe a pattern might be discov­ered if every other bit were tested, or every third, or bits were selected via a logar­ithmic progres­sion, and so on. If there is a pattern anywhere, I believe this process may be the type of program that could detect it.
   But in the mean­time, I present BitDancer, some fun (and quite interest­ing) mathemat­ics turned into a mesmer­ising, anim­ated model, and if you have any thoughts or comments I would be delighted to hear them.
   Please visit my website for other programming projects that may interest you, and feel free to email me if you like.