Categoriearchief: binair

Binaire tegels. The Movie

Na een hack verdwenen alle posts van onze site. Ik haal er af en toe eentje weer op, van het Internet Archive. 

De binaire patronen die staan op mijn poster zijn fascinerend. Vanaf elke afstand zie je andere, grotere patronen. Vanaf het moment dat de afdruk in mijn bezit was, wilde ik graag delen hoe gaaf het is om de er naar te kijken. Maar dat kunnen alleen maar de mensen doen die dichtbij zijn.

Toen bedacht ik dat het wellicht mooi zou zijn om er een film van te maken. Elke van de 65.536 vierkantjes zou langs moeten komen. Beginnend met een volledig zwart vierkant en eindigend met een volledig wit vierkant. Eerst heb ik uitgerekend of het geen avondvullend programma zou worden.

65.536 beeldjes afspelen met 25 beeldjes per seconde (PAL) levert op: 65.536/25= 2621,44 seconde. Dat zijn 43 minuten en 42 seconde. Ongeveer zo lang als De Wereld Draait Door. Lang maar uit te zitten.

Hoe moest ik dat nou gaan aanpakken? Het komt erop neer dat ik 65.536 afbeeldingen moest gaan maken. Die afbeeldingen moeten dan geïmporteerd worden in een movie-editor die er een film van maakt.

Kortom: ik moest weer gaan programmeren. Toen ik een tijdje geleden de poster maakte, maakte ik het in PHP: een programmeertaal die op het web leeft. Aan het gebruik daarvan kleven een paar nadelen. Zo is het een omslachtig proces om een programma te maken, het te uploaden naar een website en dan een pagina in een browser aan te roepen. Bovendien is het voor iedereen te doen die de URL kent (dat zullen er niet veel zijn). Maar het grootste nadeel is wel dat je de server nogal belast. Het programma gaat een tekening maken en die opslaan en dat 65.536 keer achter elkaar. Dat vergt nogal wat. Bovendien heb je dan 65.536 files op je server staan die je dan allemaal moet gaan downloaden op je computer. Gaat er ergens een stapje mis (en dat is niet zo gek, met programmeren) dan moet je de verkeerde files weggooien, opnieuw starten etc., etc. etc.

Ik was dus al snel af van het idee dat ik het met PHP moest doen. Er is bovendien een fantastisch alternatief dat pas op mijn pad was verschenen nadat ik de poster had geprogrammeerd. En dat is Processing. Processing is een Open Source programmeertaal, met name ontworpen voor kunstenaars en ontwerpers (Wikipedia). Niet al te ingewikkeld en stand-alone of binnen een website te draaien. En, wat belangrijk voor mij is, grafisch gericht.

 

Toen ik dit eenmaal bedacht was het niet al te lastig meer. Althans, programmeren is altijd een zwaar pad. Je doet heel snel iets fout (zie jij het verschil tussen (binairok[teller]) en binairok[teller)] ?) en de logica van een programma is onverbiddelijk. Maar gelukkig is er hele goede documentatie over Processing en als je er niet uitkomt zijn er ook nog ontzettend veel mensen die je helpen op fora.

Voorzichtig testen is de truc. Niet meteen alle files willen schrijven. Want dat zijn er veel! Uiteindelijk kreeg ik hem aan het werk. In de eerste versie maakte hij plaatjes met het “startvierkantje” rechtsonder. Logisch eigenlijk maar ik wilde hem graag rechtsboven; daar start hij ook op de poster. En dan moet je het helemaal opnieuw doen. De code herschrijven was geen probleem. Maar alle oude files weggooien wel. Dat duurde even. En het opnieuw laten lopen van het programma kost ook tijd (20 minuten). En het samenvoegen (met Time Lapse Assembler) ook (30 minuten). Maar, daar is ie dan. Nog een keer hier. En kijk eens goed.

Rechtsboven knippert hij het snelst: 25 x per seconde. Daarnaast gaat het twee keer zo langzaam, daarnaast nog twee keer zo langzaam etc. Hij doet telkens hetzelfde en “duwt” aan het eind van elke cyclus een wit blokje eentje verder. Dan begint het weer opnieuw. De tijd die het duurt voordat hij het volgende blokje wit heeft gemaakt, is net zo lang als de verstreken tijd. Elke keer! Dus: op de helft van de tijd (op 21.51m) maakt hij het blokje rechtsonder wit en begint hij weer van voren af aan!

Voor een nerd als ik, extreem fascinerend. Binnenkort versie 2.0 met een Hammingafstand van 1 (met dank aan @ongerijmd).

Update: hier is de film van de tegels met Hammingafstand = 1. Ik heb de data van @ongerijmd geïmporteerd in het programma en verder dezelfde weg gevolgd als hierboven. Het is zo mogelijk nog hallicunerender… 

Binaire tegels

Na een hack verdwenen alle posts van onze site. Ik haal er af en toe eentje weer op, van het Internet Archive. 

Andere getallenstelsels dan ons tientallig stelsel vind ik al heel lang heel fascinerend.

Twaalftallig ( “It’s counting, Jim, but not as we know it!”, zie hier) maar vooral binair. Tweetallig. Alleen met nullen en enen alle getallen kunnen maken die je maar wilt. Gekke rekenregels als: verdubbelen betekent een 0 erachteraan plakken (101+101=1010, oftewel 5+5=10). En die prachtige patronen. Kijk maar hiernaast. De minst belangrijke bit (rechts) alterneert telkens: even is een nul aan het eind, oneven een 1. De bit daarnaast alterneert om de twee, de bit daarnaast om de vier enzovoort. Het is van een verbluffende schoonheid.

Als een echte nerd, zat ik een paar jaar geleden te klooien met een binair patroon. Het begon met een vierkant raster van 3×3, dat ik binair wilde vullen. Dus starten met een leeg vierkant, dan links bovenin zwart, dan de tweede, dan de eerste en de tweede, dan de derde, etc. Zie hieronder voor de start van het patroon:

Je kunt dan dus op negen plekken een witte of zwarte vulling hebben. Dat betekent dat je dus 29 = 512 vierkantjes hebt. Ik wilde het graag in een vierkant plaatsen. Dat was even lastig: √(512)=22,63. Ik besloot het vierkant 23×23 te maken. Dat betekent dat ik 23×23-512=529-512=17 vierkantjes niet kon vullen.

Wat moest ik nu met die 17 lege vakjes? Ik maakte eerst in een tekenprogramma (Fireworks) alle vierkantjes. Veel werk maar door de herhalende patronen  in een uurtje klaar. Het was mooier dan ik had gedacht. Allerlei patronen die zich plotseling manifesteerden! Maar ik had nog steeds die 17 lege vakjes. Ik zag dat sommige vakjes net een letter leken. Even puzzelen en ik had een oplossing. Ik plakte ergens in het midden die vakjes die “binary tiles” vormden. Dat zijn 12 letters. Een spatie erbij en het was klaar.Voor een goede-doelen-actie op mijn school heb ik er twee afgedrukt en verkocht. Mijn eerste verkochte kunstwerken! Maar het bleef een beetje kriebelen.

Het feit dat er niet een mooi vierkant van een 3×3 model te maken is, zat me dwars. En de oplossing ligt om de hoek! Een 4×4 model kan makkelijk in een vierkant. Er zijn 16 plekken, dus er ontstaan 216 =65.536 vierkantjes. En  √(65.536) = 256!

Maar. 65.536 tegels maken. Als je er 1024 per avond maakt, ben je toch nog 64 dagen bezig! Dat moet dus anders. Gelukkig zijn binaire getallen de natuurlijke vrienden van programmeren! Dat moet dus kunnen. Nu was het alweer een tijdje geleden dat ik had geprogrammeerd en ik moest ook een programmeertaal vinden die grafisch werkt. Na een avondje zoeken en proberen, besloot ik te gaan werken met een programmeertaal waarmee ik in een ver verleden wel wat had gewerkt: PHP.

Als je dat niet zo vaak doet, wordt je code niet heel efficiënt maar het lukt me uiteindelijk. De code staat hier (als een plaatje) onder.

En weer, zoals altijd eigenlijk, werd ik overvallen door de kracht van programmeren. Met een paar regels code een vlak van 1793×1793 pixels vullen, precies op de manier zoals ik dat wilde, dat is welhaast magie.

Dit is alweer een tijdje geleden. Ik heb het eens laten afdrukken maar vergat toen dat het nogal klein is. Op 30×30 cm is één vierkantje slechts 30/256=0,12 cm groot. En dat is niet te zien. En ja, dan komen er weer andere zaken voorbij en ik vergat het.

Een week geleden liet ik het fotoalbum van onze vakantie in Wales afdrukken en dacht ik plotseling aan mijn pixelart, mijn binaire tegels kunstwerk. Ik heb uitgerekend dat als de foto afgedrukt zou worden op 100×100 cm het wel te zien zou zijn (100/256=0,4 cm). Ik zocht naar de juiste (lees: niet zo dure) afdrukcentrale (posterxxl.nl), zag dat een 120×120 cm poster een paar euro meer was dan de 100×100 cm poster, koos de eerste en drukte op de Verzend-knop. Een paar dagen later kwam de (enorme) koker binnen.

Wat een feest! Ik kan er uren naar kijken. Je ziet hiernaast het eerste stukje, linksboven. Ik heb ervoor gekozen het vlakke in een zwart kader te plaatsen en tussen elke tegel een pixelbreed randje te zetten. 16×16=256 tegels. Van zo’n stukje zijn er dus nog 256. Het begint links bovenaan met een volledig zwart vakje, meteen daarnaast zie je 0000000000000001, daarnaast 0000000000000010, daarnaast 0000000000000011 etc. Rechts onderaan zie je, als je goed kijkt, 0000111100001111 (3855).

Hieronder zie je hem helemaal, uitgespreid over de grond in onze woonkamer:

En wat nu? De afdruk is dus goed gelukt. Ik ga deze plakken op een stuk foamboard en ik hang hem in mijn lokaal. Ook ga ik hem nog eens bestellen maar dan achter plexiglas opgeplakt of op aluminium. Duur maar mooi.

En een volgende grootte? Een vierkantje van 5×5 heeft 225=33.554.432 mogelijke invullingen. Dat is veel. Bovendien is deze niet vierkant af te drukken; √(33.554.432)=5792,61875148. Een vierkantje van 6×6 dan? Dat zijn nog veel meer vierkantjes: 236 = 68.719.476.736. Dat zijn er wel extreem veel. Deze is wel vierkant af te drukken: 262.144 x 262.144. Als ik de vierkantjes dan echter op dezelfde grootte (0,4 cm, zie boven) wil afdrukken wordt de poster meer dan 1000 x 1000m. Ik vermoed dat weinig afdrukcentrales dit aankunnen.

Update 02:

Raymond (ook een #plakkerenknipper, zie twitter) heeft een LED-paneel de patronen van de Binaire Tegels laten afspelen. Supervet! Bedankt man!

Update 01:

Ik heb een video geschoten vaneen virtuele vlucht over de poster. Van linksboven via rechtsboven naar rechtsonder. Geeft een beeld hoe groot het is.

Rechten e.d.

Ik heb de code en de uiteindelijke jpg-file van de tegels niet beschikbaar gesteld. Het is namelijk best veel werk geweest om dit te maken. En een digitale kopie is exact. Mocht je geïnteresseerd zijn, mail me dan even: arjan@plakkenenknippen.nl. Ik denk overigens dat degenen die belangstelling hebben, wellicht zelf zo “nerderig” zijn dat ze dit, zeker met mijn uitleg, best zelf zouden kunnen maken.

Binaire tegels

Andere getallenstelsels dan ons tientallig stelsel vind ik al heel lang heel fascinerend.

Twaalftallig ( “It’s counting, Jim, but not as we know it!”, zie hier) maar vooral binair. Tweetallig. Alleen met nullen en enen alle getallen kunnen maken die je maar wilt. Gekke rekenregels als: verdubbelen betekent een 0 erachteraan plakken (101+101=1010, oftewel 5+5=10). En die prachtige patronen. Kijk maar hiernaast. De minst belangrijke bit (rechts) alterneert telkens: even is een nul aan het eind, oneven een 1. De bit daarnaast alterneert om de twee, de bit daarnaast om de vier enzovoort. Het is van een verbluffende schoonheid.

Als een echte nerd, zat ik een paar jaar geleden te klooien met een binair patroon. Het begon met een vierkant raster van 3×3, dat ik binair wilde vullen. Dus starten met een leeg vierkant, dan links bovenin zwart, dan de tweede, dan de eerste en de tweede, dan de derde, etc. Zie hieronder voor de start van het patroon:

Je kunt dan dus op negen plekken een witte of zwarte vulling hebben. Dat betekent dat je dus 29 = 512 vierkantjes hebt. Ik wilde het graag in een vierkant plaatsen. Dat was even lastig: √(512)=22,63. Ik besloot het vierkant 23×23 te maken. Dat betekent dat ik 23×23-512=529-512=17 vierkantjes niet kon vullen.

Wat moest ik nu met die 17 lege vakjes? Ik maakte eerst in een tekenprogramma (Fireworks) alle vierkantjes. Veel werk maar door de herhalende patronen  in een uurtje klaar. Het was mooier dan ik had gedacht. Allerlei patronen die zich plotseling manifesteerden! Maar ik had nog steeds die 17 lege vakjes. Ik zag dat sommige vakjes net een letter leken. Even puzzelen en ik had een oplossing. Ik plakte ergens in het midden die vakjes die “binary tiles” vormden. Dat zijn 12 letters. Een spatie erbij en het was klaar.Voor een goede-doelen-actie op mijn school heb ik er twee afgedrukt en verkocht. Mijn eerste verkochte kunstwerken! Maar het bleef een beetje kriebelen.

Het feit dat er niet een mooi vierkant van een 3×3 model te maken is, zat me dwars. En de oplossing ligt om de hoek! Een 4×4 model kan makkelijk in een vierkant. Er zijn 16 plekken, dus er ontstaan 216 =65.536 vierkantjes. En  √(65.536) = 256!

Maar. 65.536 tegels maken. Als je er 1024 per avond maakt, ben je toch nog 64 dagen bezig! Dat moet dus anders. Gelukkig zijn binaire getallen de natuurlijke vrienden van programmeren! Dat moet dus kunnen. Nu was het alweer een tijdje geleden dat ik had geprogrammeerd en ik moest ook een programmeertaal vinden die grafisch werkt. Na een avondje zoeken en proberen, besloot ik te gaan werken met een programmeertaal waarmee ik in een ver verleden wel wat had gewerkt: PHP.

Als je dat niet zo vaak doet, wordt je code niet heel efficiënt maar het lukt me uiteindelijk. De code staat hier (als een plaatje) onder.

En weer, zoals altijd eigenlijk, werd ik overvallen door de kracht van programmeren. Met een paar regels code een vlak van 1793×1793 pixels vullen, precies op de manier zoals ik dat wilde, dat is welhaast magie.

Dit is alweer een tijdje geleden. Ik heb het eens laten afdrukken maar vergat toen dat het nogal klein is. Op 30×30 cm is één vierkantje slechts 30/256=0,12 cm groot. En dat is niet te zien. En ja, dan komen er weer andere zaken voorbij en ik vergat het.

Een week geleden liet ik het fotoalbum van onze vakantie in Wales afdrukken en dacht ik plotseling aan mijn pixelart, mijn binaire tegels kunstwerk. Ik heb uitgerekend dat als de foto afgedrukt zou worden op 100×100 cm het wel te zien zou zijn (100/256=0,4 cm). Ik zocht naar de juiste (lees: niet zo dure) afdrukcentrale (posterxxl.nl), zag dat een 120×120 cm poster een paar euro meer was dan de 100×100 cm poster, koos de eerste en drukte op de Verzend-knop. Een paar dagen later kwam de (enorme) koker binnen.

 

Wat een feest! Ik kan er uren naar kijken. Je ziet hiernaast het eerste stukje, linksboven. Ik heb ervoor gekozen het vlakke in een zwart kader te plaatsen en tussen elke tegel een pixelbreed randje te zetten. 16×16=256 tegels. Van zo’n stukje zijn er dus nog 256. Het begint links bovenaan met een volledig zwart vakje, meteen daarnaast zie je 0000000000000001, daarnaast 0000000000000010, daarnaast 0000000000000011 etc. Rechts onderaan zie je, als je goed kijkt, 0000111100001111 (3855).

Hieronder zie je hem helemaal, uitgespreid over de grond in onze woonkamer:

 

En wat nu? De afdruk is dus goed gelukt. Ik ga deze plakken op een stuk foamboard en ik hang hem in mijn lokaal. Ook ga ik hem nog eens bestellen maar dan achter plexiglas opgeplakt of op aluminium. Duur maar mooi.

En een volgende grootte? Een vierkantje van 5×5 heeft 225=33.554.432 mogelijke invullingen. Dat is veel. Bovendien is deze niet vierkant af te drukken; √(33.554.432)=5792,61875148. Een vierkantje van 6×6 dan? Dat zijn nog veel meer vierkantjes: 236 = 68.719.476.736. Dat zijn er wel extreem veel. Deze is wel vierkant af te drukken: 262.144 x 262.144. Als ik de vierkantjes dan echter op dezelfde grootte (0,4 cm, zie boven) wil afdrukken wordt de poster meer dan 1000 x 1000m. Ik vermoed dat weinig afdrukcentrales dit aankunnen.

Update 02:

Raymond (ook een #plakkerenknipper, zie twitter) heeft een LED-paneel de patronen van de Binaire Tegels laten afspelen. Supervet! Bedankt man!

Update 01:

Ik heb een video geschoten vaneen virtuele vlucht over de poster. Van linksboven via rechtsboven naar rechtsonder. Geeft een beeld hoe groot het is.

Rechten e.d.

Ik heb de code en de uiteindelijke jpg-file van de tegels niet beschikbaar gesteld. Het is namelijk best veel werk geweest om dit te maken. En een digitale kopie is exact. Mocht je geïnteresseerd zijn, mail me dan even: arjan@plakkenenknippen.nl. Ik denk overigens dat degenen die belangstelling hebben, wellicht zelf zo “nerderig” zijn dat ze dit, zeker met mijn uitleg, best zelf zouden kunnen maken.