front_processing/src/Smoke_manipulation/particle.pde
changeset 8 e4e7db2435f8
child 9 0f44b7360c8d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/front_processing/src/Smoke_manipulation/particle.pde	Thu Mar 22 16:00:17 2012 +0100
@@ -0,0 +1,68 @@
+/*
+* This file is part of the TraKERS\Front Processing package.
+*
+* (c) IRI <http://www.iri.centrepompidou.fr/>
+*
+* For the full copyright and license information, please view the LICENSE_FRONT
+* file that was distributed with this source code.
+*/
+
+class particle
+{
+  float x;
+  float y;
+  float xvel;
+  float yvel;
+  float temp;
+  int pos;
+  
+  particle(float xIn, float yIn) {
+    x = xIn;
+    y = yIn;
+  }
+
+  void reposition() {
+    x = WIDTH/2+random(-20,20);
+    y = random(HEIGHT-10,HEIGHT);
+  
+    xvel = random(-1,1);
+    yvel = random(-1,1);
+  }
+
+  void updatepos() {
+    int vi = (int)(x/RES);
+    int vu = (int)(y/RES);
+
+    if(vi > 0 && vi < lwidth && vu > 0 && vu < lheight) {
+      v[vi][vu].addcolour(2);
+
+      float ax = (x%RES)/RES;
+      float ay = (y%RES)/RES;
+  
+      xvel += (1-ax)*v[vi][vu].xvel*0.05;
+      yvel += (1-ay)*v[vi][vu].yvel*0.05;
+      
+      xvel += ax*v[vi+1][vu].xvel*0.05;
+      yvel += ax*v[vi+1][vu].yvel*0.05;
+      
+      xvel += ay*v[vi][vu+1].xvel*0.05;
+      yvel += ay*v[vi][vu+1].yvel*0.05;
+      
+      v[vi][vu].yvel -= (1-ay)*0.003;
+      v[vi+1][vu].yvel -= ax*0.003;
+      //v[vi][vu+1].yvel -= ay*0.003;
+      
+      if(v[vi][vu].yvel < 0) v[vi][vu].yvel *= 1.00025;
+      
+      x += xvel;
+      y += yvel;
+    }
+    else {
+      reposition();
+    }
+    if(random(0,400) < 1) reposition();
+    
+    xvel *= 0.6;
+    yvel *= 0.6;
+  }
+}