front_processing/src/Smoke_manipulation/particle.pde
author bastiena
Thu, 22 Mar 2012 16:00:17 +0100
changeset 8 e4e7db2435f8
child 9 0f44b7360c8d
permissions -rw-r--r--
Processing: New examples implemented : Fluid, Smoke, Interaction examples. Split in one file for the main instructions, one for TUIO stuff. License headers added.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
     1
/*
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
     2
* This file is part of the TraKERS\Front Processing package.
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
     3
*
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
     4
* (c) IRI <http://www.iri.centrepompidou.fr/>
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
     5
*
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
     6
* For the full copyright and license information, please view the LICENSE_FRONT
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
     7
* file that was distributed with this source code.
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
     8
*/
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
     9
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    10
class particle
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    11
{
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    12
  float x;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    13
  float y;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    14
  float xvel;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    15
  float yvel;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    16
  float temp;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    17
  int pos;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    18
  
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    19
  particle(float xIn, float yIn) {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    20
    x = xIn;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    21
    y = yIn;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    22
  }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    23
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    24
  void reposition() {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    25
    x = WIDTH/2+random(-20,20);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    26
    y = random(HEIGHT-10,HEIGHT);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    27
  
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    28
    xvel = random(-1,1);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    29
    yvel = random(-1,1);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    30
  }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    31
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    32
  void updatepos() {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    33
    int vi = (int)(x/RES);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    34
    int vu = (int)(y/RES);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    35
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    36
    if(vi > 0 && vi < lwidth && vu > 0 && vu < lheight) {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    37
      v[vi][vu].addcolour(2);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    38
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    39
      float ax = (x%RES)/RES;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    40
      float ay = (y%RES)/RES;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    41
  
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    42
      xvel += (1-ax)*v[vi][vu].xvel*0.05;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    43
      yvel += (1-ay)*v[vi][vu].yvel*0.05;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    44
      
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    45
      xvel += ax*v[vi+1][vu].xvel*0.05;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    46
      yvel += ax*v[vi+1][vu].yvel*0.05;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    47
      
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    48
      xvel += ay*v[vi][vu+1].xvel*0.05;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    49
      yvel += ay*v[vi][vu+1].yvel*0.05;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    50
      
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    51
      v[vi][vu].yvel -= (1-ay)*0.003;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    52
      v[vi+1][vu].yvel -= ax*0.003;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    53
      //v[vi][vu+1].yvel -= ay*0.003;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    54
      
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    55
      if(v[vi][vu].yvel < 0) v[vi][vu].yvel *= 1.00025;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    56
      
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    57
      x += xvel;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    58
      y += yvel;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    59
    }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    60
    else {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    61
      reposition();
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    62
    }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    63
    if(random(0,400) < 1) reposition();
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    64
    
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    65
    xvel *= 0.6;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    66
    yvel *= 0.6;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    67
  }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    68
}