/* ---------------------------------------------- Computing Kaizen Studio Advanced Studio VI Spring 2010 Columbia University GSAPP Tracking Bodies Code by Anna Karigianni http://www.arch.columbia.edu/ http://proxyarch.com/kaizen This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License -----------------------------------------------*/ class Car{ //STATEMENT PVector direction; PVector position; float speedHor; Node current; Node checkNode; Node goal; boolean car; float duration; int carCount; //CONSTRUCTOR Car(Node start, boolean state){ car = state; current = start; int chosen = floor(random(0, current.connections.length)); goal = current.connections[chosen]; position = new PVector(current.x, current.y, current.z); direction = new PVector(); direction.set(goal.pos); direction.sub(current.pos); direction.normalize(); speedHor = random(0.1,0.5); direction.mult(speedHor/10); duration = random(100,200); carCount = 0; } //METHOD A - DRAW CAR void plot(){ noStroke(); pushMatrix(); translate(position.x, position.y, position.z); ellipse(0,0,1,1); popMatrix(); } //METHOD B - MOVE CAR void move(){ if(position.dist(goal.pos) < speedHor*0.8){ position.set(goal.pos); Node pastCurrent = current; current = goal; boolean chose = false; int chosen = floor(random(0, current.connections.length)); Node best = current.connections[chosen]; goal = best; } goal.traffic = min( goal.traffic + .1, spacing-.5); direction.set(goal.pos); direction.sub(position); direction.normalize(); direction.mult(speedHor); position.add(direction); } //METHOD C //TRACKING ENCOUNTERS void carcount (){ Node [] all = myGraph.getNodes (); Node b = all [floor (random (0, all.length))]; int chosen = floor(random(0, current.connections.length)); for(int i=0; i