2. Dezember 2010
In dieser Aufgabe ging es darum, die Permutation durch eine Mausfunktion zu erweitern. Dies meint, dass wir mit der Maus unsere Permutation verändern können. Ich habe meinen Code nun so verändert: Mausposition in X- Richtung = Vergrösserung und Verkleinerung der geraden Zeichen (0,2,4,6) Mausposition in Y- Richtung = Vergrösserung und Verkleinerung der ungeraden Zeichen (1,3,5) Mausklick LINKS = Drehung der geraden Zeichen wird schneller Mausklick RECHTS = Drehung der geraden Zeichen wird gestoppt Bild 1: Bild 2: Bild 3: Und hier der geänderte Code:int anzahl = 7; int rand = 50; float mauswert = 0; float mausscale; float mausscaleh; boolean transformwert = true; float drehung; float xStep; float yStep; 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(600, 600); smooth(); xStep = (width - 2 * rand) / (float)(anzahl-1); yStep = (height - 2 * rand) / (float)(anzahl-1); //noLoop(); } void draw() { background(255); int permutationsIndex = 0; if (mouseX > 300) { // festlegen der Mausposition ob es kleiner oder grösser wird (X-Richtung) mausscale +=0.01; }else{ mausscale -=0.01; } if (mouseY > 300) { // festlegen der Mausposition ob es kleiner oder grösser wird (Y-Richtung) mausscaleh +=0.01; }else{ mausscaleh -=0.01; } if (mausscaleh>1.3){ //Scalebeschränkung in der vertikalen Richtung mausscaleh = 1.3; } if (mausscaleh<0.2){ //Scalebeschränkung in der vertikalen Richtung mausscaleh = 0.2; } if (mausscale>1.3){ //Scalebeschränkung in der horizontalen Richtung mausscale = 1.3; } if (mausscale<0.2){ //Scalebeschränkung in der horizontalen Richtung mausscale = 0.2; } println(mausscale); pushMatrix(); translate(rand,rand); for(int y=0; y<anzahl;y++) { pushMatrix(); for(int x=0; x<anzahl;x++) { if(transformwert){ drehung +=0.0001; } else { drehung -=0.0001; } drawPermutationObj(permutationsIndexList[permutationsIndex],drehung,mausscale,mausscaleh); //print(str(permutationsIndexList[permutationsIndex]) + "\t"); ++permutationsIndex; translate(xStep,0.0f); } //println(); popMatrix(); translate(0.0f,yStep); } popMatrix(); } void drawPermutationObj(int type, float c, float massstabv, float massstabh) { pushStyle(); switch(type) { case 0: pushMatrix(); scale(massstabv); rotate(PI*c*mauswert); pushStyle(); //Aussenlinie stroke(0); strokeWeight(2); noFill(); ellipse(0,0,75,75); popStyle(); pushStyle(); // Weisser Unterbruch in Aussenlinie noStroke(); fill(255); ellipse(-35,0,17,17); popStyle(); pushStyle(); // innere Kreislinie stroke(0); strokeWeight(2); noFill(); ellipse(0,0,60,60); popStyle(); pushStyle(); // linker schwarzer Kreis noStroke(); fill(0); ellipse(-30+(20/2),0,20,20); popStyle(); pushStyle(); // rechter schwarzer Kreis noStroke(); fill(0); ellipse(30-(25/2),0,25,25); popStyle(); pushStyle(); // weisse innere Kreislinie stroke(255); strokeWeight(10); noFill(); ellipse(2,0,28,28); popStyle(); popMatrix(); break; case 1: pushMatrix(); scale(massstabh); rotate(c*4); pushStyle(); //Aussenlinie stroke(0); strokeWeight(2); noFill(); ellipse(0,0,75,75); popStyle(); pushStyle(); // Weisser Unterbruch in Aussenlinie noStroke(); fill(255); ellipse(-33,0,19,19); popStyle(); pushStyle(); // innere Kreislinie stroke(0); strokeWeight(3); noFill(); ellipse(0,0,60,60); popStyle(); pushStyle(); // linker schwarzer Kreis noStroke(); fill(0); ellipse(-30+(25.5/2),0,25.5,25.5); popStyle(); pushStyle(); // rechter schwarzer Kreis noStroke(); fill(0); ellipse(30-(32.5/2),0,32.5,32.5); popStyle(); pushStyle(); // weisse innere Kreislinie stroke(255); strokeWeight(14); noFill(); ellipse(4,0,28,28); popStyle(); popMatrix(); break; case 2: pushMatrix(); scale(massstabv); rotate(PI*c*mauswert); pushStyle(); //Aussenlinie stroke(0); strokeWeight(2); noFill(); ellipse(0,0,75,75); popStyle(); pushStyle(); // Weisser Unterbruch in Aussenlinie noStroke(); fill(255); ellipse(-30,0,23,23); popStyle(); pushStyle(); // innere Kreislinie stroke(0); strokeWeight(4); noFill(); ellipse(0,0,60,60); popStyle(); pushStyle(); // linker schwarzer Kreis noStroke(); fill(0); ellipse(-30+(31/2),0,31,31); popStyle(); pushStyle(); // rechter schwarzer Kreis noStroke(); fill(0); ellipse(30-(37/2),0,37,37); popStyle(); pushStyle(); // weisse innere Kreislinie stroke(255); strokeWeight(12); noFill(); ellipse(6,0,28,28); popStyle(); popMatrix(); break; case 3: pushMatrix(); scale(massstabh); rotate(c*4); pushStyle(); //Aussenlinie stroke(0); strokeWeight(2); noFill(); ellipse(0,0,75,75); popStyle(); pushStyle(); // Weisser Unterbruch in Aussenlinie noStroke(); fill(255); ellipse(-29,0,25.5,25.5); popStyle(); pushStyle(); // innere Kreislinie stroke(0); strokeWeight(5); noFill(); ellipse(0,0,60,60); popStyle(); pushStyle(); // linker schwarzer Kreis noStroke(); fill(0); ellipse(-30+(35/2),0,35,35); popStyle(); pushStyle(); // rechter schwarzer Kreis noStroke(); fill(0); ellipse(30-(41/2),0,41,41); popStyle(); pushStyle(); // weisse innere Kreislinie stroke(255); strokeWeight(10); noFill(); ellipse(8,0,28,28); popStyle(); popMatrix(); break; case 4: pushMatrix(); scale(massstabv); rotate(PI*c*mauswert); pushStyle(); //Aussenlinie stroke(0); strokeWeight(2); noFill(); ellipse(0,0,75,75); popStyle(); pushStyle(); // Weisser Unterbruch in Aussenlinie noStroke(); fill(255); ellipse(-28,0,28,28); popStyle(); pushStyle(); // innere Kreislinie stroke(0); strokeWeight(6); noFill(); ellipse(0,0,60,60); popStyle(); pushStyle(); // linker schwarzer Kreis noStroke(); fill(0); ellipse(-30+(38/2),0,38,38); popStyle(); pushStyle(); // rechter schwarzer Kreis noStroke(); fill(0); ellipse(30-(45/2),0,45,45); popStyle(); pushStyle(); // weisse innere Kreislinie stroke(255); strokeWeight(8); noFill(); ellipse(10,0,28,28); popStyle(); popMatrix(); break; case 5: pushMatrix(); scale(massstabh); rotate(c*6); pushStyle(); //Aussenlinie stroke(0); strokeWeight(2); noFill(); ellipse(0,0,75,75); popStyle(); pushStyle(); // Weisser Unterbruch in Aussenlinie noStroke(); fill(255); ellipse(-26,0,31,31); popStyle(); pushStyle(); // innere Kreislinie stroke(0); strokeWeight(7); noFill(); ellipse(0,0,60,60); popStyle(); pushStyle(); // linker schwarzer Kreis noStroke(); fill(0); ellipse(-30+(40/2),0,39,39); popStyle(); pushStyle(); // rechter schwarzer Kreis noStroke(); fill(0); ellipse(30-(49/2),0,47,47); popStyle(); pushStyle(); // weisse innere Kreislinie stroke(255); strokeWeight(6); noFill(); ellipse(12,0,28,28); popStyle(); popMatrix(); break; case 6: pushMatrix(); scale(massstabv); rotate(PI*c*mauswert); pushStyle(); //Aussenlinie stroke(0); strokeWeight(2); noFill(); ellipse(0,0,75,75); popStyle(); pushStyle(); // Weisser Unterbruch in Aussenlinie noStroke(); fill(255); ellipse(-24,0,34,34); popStyle(); pushStyle(); // innere Kreislinie stroke(0); strokeWeight(8); noFill(); ellipse(0,0,60,60); popStyle(); pushStyle(); // linker schwarzer Kreis noStroke(); fill(0); ellipse(-30+(44/2),0,44,44); popStyle(); pushStyle(); // rechter schwarzer Kreis noStroke(); fill(0); ellipse(30-(52/2),0,52,52); popStyle(); pushStyle(); // weisse innere Kreislinie stroke(255); strokeWeight(4); noFill(); ellipse(14,0,28,28); popStyle(); popMatrix(); break; default: break; } popStyle(); } void keyPressed() { switch(key) { case ' ': save("permutation.jpg"); break; case '1': transformwert = !transformwert; } } void mousePressed() { if (mousePressed && (mouseButton == LEFT)){ // wenn linke Maustaste gedrückt wird, dann mauswert plus 0.5 mauswert = mauswert + 1; } else if (mousePressed && (mouseButton == RIGHT)) { // wenn rechte Maustaste gedrückt wird, dann stoppt es mauswert = 0; } if (mauswert > 50) { mauswert = 0; } println(mauswert); } /*void mouseMoved() { mausscale = mausscale + 0.1; if (mauswert > 1) { mauswert = 0; } println(mausscale); }*/