diff -r 8a21bec5d45f -r e4e7db2435f8 front_processing/src/Smoke_manipulation/particle.pde --- /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 +* +* 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; + } +}