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.

Permutation VJ

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