mileshiroo

10 Feb 2015

gifsmall

Many WikiHow tutorials include illustrations to accompany the text. I found an illustration of a man on the article “How to Tell Someone to Stop Flirting With You” that I thought would be suitable to animate. I animated many instances of this man at two scales to create a multiplicity of men. The scene is at once relaxing and monotonous. The man’s expression suggests intense focus, even passion. A reinforcing feedback loop only strengthens his commitment to the task at hand.

PImage man;
PVector manSize; 
float ang = 0;
int numMediumMen = 30;
int numBigMen = 35;
PImage[] mediumMen = new PImage[numMediumMen];
PImage[] bigMen = new PImage[numBigMen];
PVector[] smallMenPos = new PVector[numSmallMen];
PVector[] mediumMenPos = new PVector[numMediumMen];
PVector[] bigMenPos = new PVector[numBigMen];
float[] smallMenVel = new float[numSmallMen];
float[] mediumMenVel = new float[numMediumMen];
float[] bigMenVel = new float[numBigMen];



void initializeMen() {
  int startX = -100;

  for(int j = 0; j < numMediumMen; j++) {
    int y = height/5 + (int)random(80);
    int x = j * (int)manSize.x + startX;
    mediumMen[j] = loadImage("him.png");
    mediumMenPos[j] = new PVector(x,y);
    mediumMenVel[j] = random(-j/2,j/2); 
  }
  
  for(int k = 0; k < numBigMen; k++) {
    int y = -width/10 + (int)random(80);
    int x = k * (int)manSize.x + startX*6;
    bigMen[k] = loadImage("him.png");
    bigMen[k].resize((int)manSize.x*6,(int)manSize.y*6);
    bigMenPos[k] = new PVector(x,y);
    bigMenVel[k] = random(-k/5,k/5);
  }
}

void setup() {
  size(1500, 1500);  
  man = loadImage("him.png");
  manSize = new PVector(man.width/2,man.height/2);
  initializeMen();
}

void draw() {
  if(frameCount > 12) noLoop();
  saveFrame();
  ang += TWO_PI/10.0;
  background(255);
  tint(255,180);

  translate(-300,0);  
  for(int k = numBigMen - 1; k >= 0; k--) {
    image(bigMen[k],bigMenPos[k].x,bigMenPos[k].y);
    bigMenPos[k].y += bigMenVel[k]*sin(ang); 
  }
  
  tint(255);
  for(int j = numMediumMen - 1; j >= 0; j--) {
    float pulseAmt = float(j)/float(numMediumMen)*.15;
    mediumMenPos[j].y += mediumMenVel[j]*sin(ang);
    mediumMenPos[j].x += mediumMenVel[j]*sin(ang);
    image(mediumMen[j],mediumMenPos[j].x,mediumMenPos[j].y,mediumMen[j].width*((sin(ang)*pulseAmt)+.95),mediumMen[j].height*((sin(ang)*pulseAmt)+1.5));

  }
}