23. Dezember 2010
Unsere Aufgabe war es, die Permutation mit unterstützung eines Musiktitels zu "performen". Durch das arbeiten am Processing mit immer den gleichen geometrischen Formen und immer alles in Schwarz/Weiss gestaltet, fand ich es passend ein elektronischer Soundtrack zu wählen. Was nicht bedeutet dass ich privat solche Musik bevorzuge. Folgende Tasten habe ich mit Befehlen programmiert: `Mousezeiger` = Zeichen werden skaliert `space` = richtungsänderung der weissen Kreise `s` = start stop rotation `t` = Hintergrund schwarz `g` = Zeichen Invertieren `z` = Hintergrund weiss `h` = Zeichen Invertierenimport fullscreen.*; FullScreen fs; int b; int w; int anzahl = 7; int rand = 50; float turn; float xStep; float yStep; boolean changeDirection; boolean stop; float mX; float mY; int[] permutationsIndexList = {0, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 5, 2, 3, 4, 5, 6, 5, 4, 3, 4, 5, 6, 5, 4, 3, 4, 5, 6, 5, 4, 3, 2, 5, 6, 5, 4, 3, 2, 1, 6, 5, 4, 3, 2, 1, 0}; void setup() { size(540, 540); smooth(); turn = 1; float mX = 1; float mY = 1; xStep = (width - 2 * rand) / (float)(anzahl-1); yStep = (height - 2 * rand) / (float)(anzahl-1); //noLoop(); fs = new FullScreen(this); } void draw() { background(w); int permutationsIndex = 0; pushMatrix(); translate(rand,rand); for(int y=0; y<anzahl;y++) { pushMatrix(); for(int x=0; x<anzahl;x++) { if(stop){ if(changeDirection){ turn +=0.003; }else { turn -=0.003; } } drawPermutationObj(permutationsIndexList[permutationsIndex],turn, xStep*x+rand,yStep*y+rand); //print(str(permutationsIndexList[permutationsIndex]) + "\t"); ++permutationsIndex; translate(xStep,0.0f); } //println(); popMatrix(); translate(0.0f,yStep); } popMatrix(); } void drawPermutationObj(int type, float t, float objX, float objY) { float winkel = atan2 (mouseX - objY, mouseY - objX); PVector mousePos = new PVector(); mousePos.set (mouseX, mouseY, 0); PVector objPos = new PVector(); objPos.set (objX, objY, 0); PVector dir = PVector.sub (objPos, mousePos); float distance = dir.mag(); float grow = map(distance, 0, width, 77,7); float grow2 = map(distance, 0, width, 37,63); pushStyle(); switch(type) { case 0: stroke(b); fill(b); ellipse(0,0,75,75); // gleichbleibender grosser kreis schwarz fill(w); noStroke(); pushMatrix(); rotate(t); ellipse(0,-14,grow2,grow2); // weiser kreis oben ellipse(0,14,grow2,grow2); // weisser kreis unten popMatrix(); fill(b); ellipse(0,0,grow,grow); // kleinerwerdender kreis schwarz break; case 1: stroke(b); fill(b); ellipse(0,0,75,75); // gleichbleibender grosser kreis schwarz fill(w); noStroke(); pushMatrix(); rotate(t); ellipse(0,-14,grow2,grow2); // weiser kreis oben ellipse(0,14,grow2,grow2); // weisser kreis unten popMatrix(); fill(b); ellipse(0,0,grow,grow); // kleinerwerdender kreis schwarz break; case 2: stroke(b); fill(b); ellipse(0,0,75,75); // gleichbleibender grosser kreis schwarz fill(w); noStroke(); pushMatrix(); rotate(t); ellipse(0,-14,grow2,grow2); // weiser kreis oben ellipse(0,14,grow2,grow2); // weisser kreis unten popMatrix(); fill(b); ellipse(0,0,grow,grow); // kleinerwerdender kreis schwarz break; case 3: stroke(b); fill(b); ellipse(0,0,75,75); // gleichbleibender grosser kreis schwarz fill(w); noStroke(); pushMatrix(); rotate(t); ellipse(0,-14,grow2,grow2); // weiser kreis oben ellipse(0,14,grow2,grow2); // weisser kreis unten popMatrix(); fill(b); ellipse(0,0,grow,grow); // kleinerwerdender kreis schwarz break; case 4: stroke(b); fill(b); ellipse(0,0,75,75); // gleichbleibender grosser kreis schwarz fill(w); noStroke(); pushMatrix(); rotate(t); ellipse(0,-14,grow2,grow2); // weiser kreis oben ellipse(0,14,grow2,grow2); // weisser kreis unten popMatrix(); fill(b); ellipse(0,0,grow,grow); // kleinerwerdender kreis schwarz break; case 5: stroke(b); fill(b); ellipse(0,0,75,75); // gleichbleibender grosser kreis schwarz fill(w); noStroke(); pushMatrix(); rotate(t); ellipse(0,-14,grow2,grow2); // weiser kreis oben ellipse(0,14,grow2,grow2); // weisser kreis unten popMatrix(); fill(b); ellipse(0,0,grow,grow); // kleinerwerdender kreis schwarz break; case 6: stroke(b); fill(b); ellipse(0,0,75,75); // gleichbleibender grosser kreis schwarz fill(w); noStroke(); pushMatrix(); rotate(t); ellipse(0,-14,grow2,grow2); // weisser kreis oben ellipse(0,14,grow2,grow2); // weisser kreis unten popMatrix(); fill(b); ellipse(0,0,grow,grow); // kleinerwerdender kreis schwarz break; default: break; } popStyle(); } void keyPressed() { switch(key) { //case ' ': //save("permutation.jpg"); // break; case ' ': changeDirection = !changeDirection; break; case 's': stop = !stop; break; case 'g': b = 255; break; case 'h': b = 0; break; case 't': w = 0; break; case 'z': w = 255; break; // case 'h': // col = 0; // break; } } void mouseMoved() { mX = map(mouseX, 0, width, 1.0, 5.0); mY = map(mouseY, 0, height, 1, 1.5); }