2. Dezember 2010
Die Permutation wird jetzt durch die Maus animiert. Die X-Achse bestimmt die Rotation und die Y-Achse die grösse der zwei weissen Kreise.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(); } void draw() { background(255); int permutationsIndex = 0; pushMatrix(); translate(rand,rand); for(int y=0; y<anzahl;y++) { pushMatrix(); for(int x=0; x<anzahl;x++) { drawPermutationObj(permutationsIndexList[permutationsIndex],turn, mX,mY); print(str(permutationsIndexList[permutationsIndex]) + "\t"); ++permutationsIndex; translate(xStep,0.0f); } println(); popMatrix(); translate(0.0f,yStep); } popMatrix(); } void drawPermutationObj(int type, float t, float rot, float grw) { pushStyle(); switch(type) { case 0: stroke(0); fill(0); ellipse(0,0,75,75); // gleichbleibender grosser kreis schwarz fill(255); noStroke(); pushMatrix(); rotate(t*rot); ellipse(0,-14,55*grw,55*grw); // weiser kreis oben ellipse(0,14,55*grw,55*grw); // weisser kreis unten popMatrix(); fill(0); ellipse(0,0,63/grw,63/grw); // kleinerwerdender kreis schwarz break; case 1: stroke(0); fill(0); ellipse(0,0,75,75); // gleichbleibender grosser kreis schwarz fill(255); noStroke(); pushMatrix(); rotate(t*rot); ellipse(0,-14,54*grw,54*grw); // weiser kreis oben ellipse(0,14,54*grw,54*grw); // weisser kreis unten popMatrix(); fill(0); ellipse(0,0,60/grw,60/grw); // kleinerwerdender kreis schwarz break; case 2: stroke(0); fill(0); ellipse(0,0,75,75); // gleichbleibender grosser kreis schwarz fill(255); noStroke(); pushMatrix(); rotate(t*rot); ellipse(0,-14,53*grw,53*grw); // weiser kreis oben ellipse(0,14,53*grw,53*grw); // weisser kreis unten popMatrix(); fill(0); ellipse(0,0,52/grw,52/grw); // kleinerwerdender kreis schwarz break; case 3: stroke(0); fill(0); ellipse(0,0,75,75); // gleichbleibender grosser kreis schwarz fill(255); noStroke(); pushMatrix(); rotate(t*rot); ellipse(0,-14,52*grw,52*grw); // weiser kreis oben ellipse(0,14,52*grw,52*grw); // weisser kreis unten popMatrix(); fill(0); ellipse(0,0,44/grw,44/grw); // kleinerwerdender kreis schwarz break; case 4: stroke(0); fill(0); ellipse(0,0,75,75); // gleichbleibender grosser kreis schwarz fill(255); noStroke(); pushMatrix(); rotate(t*rot); ellipse(0,-14,51*grw,51*grw); // weiser kreis oben ellipse(0,14,51*grw,51*grw); // weisser kreis unten popMatrix(); fill(0); ellipse(0,0,36,36); // kleinerwerdender kreis schwarz break; case 5: stroke(0); fill(0); ellipse(0,0,75,75); // gleichbleibender grosser kreis schwarz fill(255); noStroke(); pushMatrix(); rotate(t*rot); ellipse(0,-14,50*grw,50*grw); // weiser kreis oben ellipse(0,14,50*grw,50*grw); // weisser kreis unten popMatrix(); fill(0); ellipse(0,0,28*grw,28*grw); // kleinerwerdender kreis schwarz break; case 6: stroke(0); fill(0); ellipse(0,0,75,75); // gleichbleibender grosser kreis schwarz fill(255); noStroke(); pushMatrix(); rotate(t*rot); ellipse(0,-14,49*grw,49*grw); // weiser kreis oben ellipse(0,14,49*grw,49*grw); // weisser kreis unten popMatrix(); fill(0); ellipse(0,0,21*grw,21*grw); // kleinerwerdender kreis schwarz break; default: break; } popStyle(); } void keyPressed() { switch(key) { case ' ': save("permutation.jpg"); break; case 'f': changeDirection = !changeDirection; break; } } void mouseMoved() { mX = map(mouseX, 0, width, 1.0, 5.0); mY = map(mouseY, 0, height, 0.9, 1.3); }