int CREATION_INTENSITY = 2; double GRAVITY = 0.0; Particles particles; Obstacles obstacles; WebcamMen webcamMen; Webcam webcam; Vector mouseParticles = new Vector(); int ms, lastMs, avFrameTime; int[] frameTimeBuffer; int MIN_FPS = 25; int FPS = 35; int FPS_BUFFER_FRAMES = 50; void setup() { size(500,250,P3D); // CREATE PARTICLES: particles = new Particles(); for (int i=0;i<1000;i++) { Particle p = new Particle(width*random(0.4,0.6),height*random(0.4,1.0)); particles.addParticle(p); } // CREATE OBSTACLES: obstacles = new Obstacles(); obstacles.add(new Obstacle(50,1,1,1)); obstacles.add(new Obstacle(width-50,1,width-1,1)); obstacles.add(new Obstacle(50,1,width-50,1)); obstacles.add(new Obstacle(1,height-1,width-1,height-1)); obstacles.add(new Obstacle(1,1,1,height-1)); obstacles.add(new Obstacle(width-1,1,width-1,height-1)); // CREATE WEBCAM SIMULATION webcam = new Webcam(width,height); webcamMen = new WebcamMen(); ms=millis(); frameTimeBuffer=new int[0]; } void keyPressed() { GRAVITY=0.8; } void keyReleased() { GRAVITY=0.0; } void draw() { // advance webcam simulation webcamMen.draw(); webcamMen.setPixelsTo(this,webcam); background(255); // show webcam input: image(webcam,0,0); // webcam to particles: webcam.imageToParticleVector(particles); // add particles with right mouse click if (mousePressed&&mouseButton==RIGHT) { if (pmouseX!=mouseX||pmouseY!=mouseY) { Vec mouse = new Vec(Vec.MOUSE); Vec pmouse = new Vec(Vec.PMOUSE); Vec dis = vecSub(mouse,pmouse); double d = (vecSub(mouse,pmouse)).len()/Particle.MAX_INFLUENCE_RANGE; double pd = 1.0/d; for (double p=0;p<1.0;p+=pd) { for (int i=0;i