Andor Salga

Blinds demo

This page demonstrates the Pjs rect() function.

// Demo by Andor Salga
import processing.opengl.*;

int frame = 0;
float[] list = new float[20];
float g = 0;
float w = 10;

// larger is higher
float windSpeed = 1;
float windStr = 190;
float varyance = 1.5;

void setup(){
  size(400,400, OPENGL);
  r();
}

void r(){
  for(int i=0; i < 20; i++){
    list[i] += random(-varyance, varyance);
  }
}

void draw(){

background(240);
translate(10, 20, 0);

pushMatrix();
fill(140,120,0);

translate(50,90,-90);
scale(4,4,4);
rotateX(-0.4);

box(20,1,20);// seat

pushMatrix();
translate(8,10,8);
box(2,20,2); 
popMatrix();

pushMatrix();
translate(-8,10,-8);
box(2,20,2); 
popMatrix();

pushMatrix();
translate(8,10,-8);
box(2,20,2); 
popMatrix();

pushMatrix();
translate(-8,10,8);
box(2,20,2); 
popMatrix();

popMatrix();

pushMatrix();
translate(50,20,-40);
fill(0,0,255,30);

popMatrix();

pushMatrix();
translate(width/2, 30+height/2, 90);
pointLight(50, 150, 0, 0, 0 ,0);
popMatrix();

stroke(0);
strokeWeight(1);


directionalLight(200,50,0, 0,0, -1);

for(int i = 0; i < 20; i++){
  rotateX(sin(frameCount/50)/windStr);
  pushMatrix();

  int li = (int)list[i];

  rotateX(sin((frameCount + li)/20)/30);
  fill(128,120,128,150);
  rect(i*10, 10, 10, 190);
  popMatrix();
}

if(frame%2000 == 0){
  r();
  g+=random(-1,1);
  w +=random(-2,2);
}

if(frame%300 == 0){
  windStr += random(-1,1);
}
}