logo

Wanderers_Applet

/////////////////////////////////////////////////////////////////////////////////////
import toxi.color.*;
import toxi.math.*;
import controlP5.*;
import java.util.*;
import toxi.geom.*;
//-------------------------------------------------------------------------------------------
int resetAmount = 0; 
float objectCount = 1000;
float sepVal, neighborDist, aligVal, cohVal, maxSpeed, maxSep, initSpeed,spawnEdge;
//-------------------------------------------------------------------------------------------
boolean valfromMap,showMap,SpawnEdge,simulate;
boolean setMap = false;
//-------------------------------------------------------------------------------------------
GUI cgui;
PImage img;
//-------------------------------------------------------------------------------------------
ArrayList group;
//-------------------------------------------------------------------------------------------
//---------------------------------------Settings--------------------------------------------
//-------------------------------------------------------------------------------------------
void settings() {
  size(1800, 1000, FX2D);
  smooth();
}
//---------------------------------------Setup-----------------------------------------------
//-------------------------------------------------------------------------------------------
void setup() {
  background(0);
  simulate = true;
  if (this.resetAmount == 0) {
    cgui = new GUI();
    cgui.run(this);
  }
  img = loadImage("MAP3.jpg");
  frameRate(100);
  this.group = new ArrayList();
  //-------------------------------------------------------------------------------------------
  for (int i = 0; i < objectCount; i ++) {
    Vec3D initVel, agLoc;
    if (!this.SpawnEdge) { // set init spawn and speed based on spawning on edge
      agLoc = new Vec3D(random(width), random(height), 0);
      initVel = new Vec3D(random(-initSpeed, initSpeed), random(-initSpeed, initSpeed), 0);
    } else { //spawn randomly and move randmly
      agLoc = new Vec3D(random(0), random(height), 0);
      initVel = new Vec3D(1, 0, 0);
    }
    Meanderer obj = new Meanderer(agLoc, initVel);
    group.add(obj);
  }
}
//---------------------------------------Draw------------------------------------------------
//-------------------------------------------------------------------------------------------
void draw() {
  background(0);
  //-------------------Set the field values for the meanderer--------------------------------
  this.initSpeed = this.cgui.is.getValue();
  this.objectCount = this.cgui.ac.getValue();

  for (int i = 0; i < this.group.size(); i++) {
    Meanderer obj = (Meanderer) this.group.get(i);
    obj.MaxForce = this.cgui.mf.getValue();
    obj.MaxSpeed = this.cgui.ms.getValue();
    obj.Multiplier = this.initSpeed;
    obj.randomize = this.cgui.rc.getState();
    obj.wandertheta = this.cgui.wt.getValue();
    obj.wanderR = this.cgui.wr.getValue();
    obj.wanderD = this.cgui.wd.getValue();
    obj.change = this.cgui.wc.getValue();
    obj.run();
  }
  if (showMap == true) {
    image(img, 0, 0);
    tint(255, 120);
  }
}
//---------------------------------------Keys------------------------------------------------
//-------------------------------------------------------------------------------------------
void keyPressed() {
  if (key == 'R') {
    this.resetAmount ++;
    setup();
  }
  if (key == 'U') {
    simulate = !simulate;
  }
  if (key == 'S') {
    showMap = !showMap;
  }
  if (key == 'A') {
    setMap = !setMap;
  }
    if (key == 'P') {
    simulate = !simulate;
    saveFrame("img-######.png");
  }
}
Update
  • Share