Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

permutation3

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);
}