Square colors - auto-genereret kunst

Kategori: Egne projekter | Kommentarer (1)
Gemt: 2011-03-30 13:58


Midt i en travl hverdag er det vigtigt at huske at sætte tid af til leg, for det er tit gennem leg at man får evner og ideer til nye projekter.
I sidste uge havde jeg lidt tid til netop det, og resultatet blev square colors.

Fremfor at forklare hvad det er, så klik på billedet og prøv det:
Square colors

Koden er ikke så avanceret så den er værd at gennemgå detaljeret, det der for mig har været den allervigtigste læring ved dette lille projekt er, hvor afgørende det kan være at få struktureret koden ordentligt.

Det gjorde det nemlig nemt lynhurtigt at få prøvet en masse ting af: Kun cirkler, kun firkanter, små figurer, få figurer, store figurer, forskellige farver m.m. blot ved at stille på nogle få variabler, og når man er på vej ud på dybt vand, så er en vigtig forudsætning for succes, at man kan iterere hurtigt.

Kuler
Fremfor at vælge nogle tilfældige farver selv, og dermed ende med temmelig elendig programmørgrafik, så har jeg i stedet fundet inspiration til farvetemaer på Adobe Kuler.

Den oprindelige tanke var faktisk at loade nogle random farvetemaer via deres API, men deres system har været lidt ustabilt, så derfor turde jeg i sidste ende ikke løbe an på det.

Eksport
Den bedste måde at få et resultat ud i høj kvalitet, som kan printes pænt, ville være at lave en eksport til pdf. Men, det syntes jeg var for stor en mundfuld til dette projekt, så derfor eksporterer jeg i stedet en png i den maksimale størrelse som Flash kan håndtere, nemlig et areal på 16.777.215 pixels.

Eftersom jeg har afprøvet en masse forskelligt, så har resultatet ikke altid været kvadratisk, og derfor var det en udfordring at eksportere i maksimal størrelse samtidig med at jeg bevarede dimensionerne på billedet.

Faktisk, så er det ikke så svært, medmindre man som jeg, ikke har løst en ligning med to ubekendte siden folkeskolen, så derfor fik jeg lidt hjælp til matematikforståelsen (tak Mette!), og det kom der så denne kode ud af:

var _max_pixels:Number = 16777215;
var _ratio:Number = object.width / object.height;
var _max_width:int = int(_ratio * Math.sqrt(_max_pixels / _ratio));
var _optimal_scale:Number = _max_width / object.width;

Hvis der er andre dele af projektet, som du synes det kunne være interessant at høre mere om, så smid endelig en kommentar.