Mondriaan meets Fractals.

Via twitter kwam ik deze wedstrijd tegen: http://elegant.setup.nl/, en ik voelde me uitgedaagd om een algoritme te schrijven om een Mondriaan te genereren. Hier is mijn inzending:

Hoe vang je een Mondriaan in een algoritme? Een mooie uitdaging. Ik besloot om niet te proberen de Victory Boogie-Woogie na te maken, maar te proberen vlakverdelingen te genereren die van Mondriaan zouden kunnen zijn. Daarnaast is het interessant om een kleine eigen touch aan het w erk te geven.  Niet om de meester te willen verbeteren, maar omdat het interessant en leuk is. Ik ben geen kenner, wel een liefhebber, en had geen tijd me te verdiepen in de literatuur. Ik ben dus puur op eigen indrukken van de schilderijen afgegaan.

Een Mondriaan, tenminste zijn latere werk, is in essentie een verdeling van het vlak in rechthoeken. In veel werk worden die vlakken gescheiden door duidelijke zwarte lijnen, in VBW niet, daar onderscheidt een vlak zich alleen door zijn kleur.

Belangrijk in een Mondriaan is de verhouding tussen de grootte van de vlakken. Vaak zijn de grotere vlakken excentrisch maar wel dicht bij het midden geplaatst, als een soort centrale pleinen. Naar de randen toe worden de vierkanten vaak kleiner en soms langwerpiger. Bij Victory Boogie-Woogie zijn er bovendien twee verdelingen die in andere schilderijen niet voorkomen. De eerste noem ik strips, geblokte banden die de functie van een grens lijken te hebben. De tweede zijn vlakken met een zwevend, kleiner, contrasterend vlak er in. Die rechthoeken zijn altijd dicht bij een vierkant. Lengte en breedte verschillen niet veel van elkaar.

i6

Op basis hiervan kwam ik tot een algoritme:

  1. Verdeel het vlak in negen delen. De centrale rechthoek plaats je excentrisch en wordt niet verder verdeeld.
  2. Voeg de 8 vakken rond de centrale vak samen tot vier rechthoeken. Dit kan op meerdere manieren, gebruik een toevalsgenerator om te kiezen hoe.
  3. Verdeel deze vier rechthoeken opnieuw op deze wijze, met de volgende uitzonderingen:
    1. Op basis van toeval wordt een deel van de rechthoeken niet verder verdeeld.
    2. Een langgerekte driehoek kan een strip worden
    3. Een kleine rechthoek die bijna vierkant is kan een vierkant worden met een kleiner zwevend vierkant er in.
  4. In een Mondriaan wordt meestal na 1 stap niet verder onderverdeeld, maar in principe kun je oneindig lang doorgaan. Het schilderij wordt dan een fractal, een figuur waarin je oneindig lang kunt inzoomen en steeds nieuwe structuren te zien. Omdat algoritmebouwers van recursie houden is dit een mooie twist voor deze opdracht.

i4Ik heb voor zowel de Mondriaans met lijnen en primaire kleuren, als voor de wat zachtere kleuren van de Victory Boogie-Woogie een aantal “schilderijen” gemaakt met dit algoritme. De resultaten staan verspreid op deze pagina. Hieronder staat de generator zelf:  Door op ‘go’ te klikken maak je een nieuw schilderij. Als het niet bevalt maak je gewoon een nieuwe. Je kunt kiezen voor het kleurenpallet, of er lijnen moeten worden getekend en voor de diepte: hoe vaak wil je dat het algoritme rechthoeken blijft opdelen? Als je op ‘save’ drukt opent een nieuw venster met daarin een PNG-afbeelding van het schilderij dat je kunt opslaan vanuit je browser.

De broncode van het algoritme is hier te downloaden. De afbeelding hieronder is een ‘diepere’ uitvoering en in groot formaat te downloaden. En oja, als je dit leuk vindt, stem dan op me bij de wedstrijd.

VBW groot

 

 

 

Een gedachte over “Mondriaan meets Fractals.

Geef een reactie