![]() |
an installation for the BeOS. version 1.0 |
![]() |
allPossibleImages is the second in a series of pieces i am making
that run under the BeOS. the first in
the series was SineClock.
allPossibleImages presents an 8x8 grid of small blue lights (LED's). working at a rate of about 10 per second, it is steadily cycling through all the images that can possibly be displayed on such a grid. the number of possible images is immense, and it will take far longer than the life of our solar system to complete the cycle. pull up a comfortable chair!
allPossibleImages requires Jon Watte's LibPrefs. check http://www.be.com/beware/Libraries.html for the latest version. you probably already have it installed.
double click on the allPossibleImages icon. the main window will appear, and the images will begin cycling. fascinating.
you can use the mouse to turn individual LED's on and off. you can draw a picture and then watch as it slowly decays. allPossibleImages is a replicant, so you can drag it to a container (like the desktop) and leave it there until the end of time. check your BeOS documentation for info on using replicants. briefly: go to the Be menu and select "Show Replicants." a little hand should appear in the corner of the allPossibleImages window. use that hand to drag the image to the desktop. now go back to the Be menu and select "Hide Replicants" to get rid of the little hand.
allPossibleImages will remember its window position, as well as where it is in the cycle of all possible images, when you quit or shut down your computer. the next time allPossibleImages is run, it will continue cycling from where it left off.
the 8x8 grid has 64 LED's in it. i treat those LED's as bits in a 64 bit binary number. by counting from zero to 2^64 - 1, and displaying each number's bit pattern on the grid, i cycle through all of the bit patterns/images possible with a 64 bit number.
it's easier to imagine using smaller numbers: let's say i'm using a 2x2 grid. that would give me 4 bits. with four bits you can represent 2^4 or 16 different numbers, and by counting from zero to 15 and displaying the corresponding bit pattern for each number, i would cycle through the 16 different possible images. the images in the 2x2 grid wouldn't be very interesting though - there's not a lot you can do with just four pixels!
with a 2x2 grid we get 2^4 or 16 different images. with an 8x8 grid, we get 2^64 or 1.84467440737096E+19 (18,446,744,073,709,600,000) different images! at ten images per second, it's going to take a really really really long time to display all of the images. let's see, 10*60*60*24*365 gives us a rate of 315,360,000 images a year. 2^64/315360000 = 58,494,241,735.5 years to finish the first cycle. then allPossibleImages will start again at the beginning.
the bits are arranged in a spiral starting from the center of the grid. although i count linearly from 0 to 2^64 - 1, i use grey code to determine which LED's to turn on/off for each bit pattern. this lets the image develop/change smoothly, without the mass turn-offs that would happen if i used straight binary. for example, going from 15 (01111) to 16 (10000) in binary is a pretty drastic change. grey code ensures that only one bit changes for each transition.
email: glmrboy@shoko.calarts.edu
email: douglas.repetto@dartmouth.edu
web: http://shoko.calarts.edu/~glmrboy
permanent land:
2046 bellemead ave
havertown, pa
19083-2221 USA
temporary land (good at least through 1998):
6187 hinman
music department
hanover, n.h.
03755 USA