front_processing/src/Smoke_manipulation/vsquare.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 vsquare {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    11
  int x;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    12
  int y;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    13
  float xvel;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    14
  float yvel;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    15
  float col;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    16
  
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    17
  vsquare(int xIn,int yIn) {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    18
    x = xIn;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    19
    y = yIn;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    20
  }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    21
  
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    22
  void addbuffer(int i, int u) {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    23
    if(i>0 && i<lwidth && u>0 && u<lheight) {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    24
      xvel += (vbuf[i-1][u-1].pressure*0.5
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    25
      +vbuf[i-1][u].pressure
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    26
      +vbuf[i-1][u+1].pressure*0.5
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    27
      -vbuf[i+1][u-1].pressure*0.5
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    28
      -vbuf[i+1][u].pressure
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    29
      -vbuf[i+1][u+1].pressure*0.5
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    30
      )*0.49;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    31
      yvel += (vbuf[i-1][u-1].pressure*0.5
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    32
      +vbuf[i][u-1].pressure
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    33
      +vbuf[i+1][u-1].pressure*0.5
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    34
      -vbuf[i-1][u+1].pressure*0.5
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    35
      -vbuf[i][u+1].pressure
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    36
      -vbuf[i+1][u+1].pressure*0.5
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    37
      )*0.49;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    38
    }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    39
  }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    40
  
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    41
  void updatevels(int mvelX, int mvelY, TuioPoint pt) {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    42
    float adj = x;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    43
    float opp = y;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    44
    float dist;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    45
    float mod;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    46
    
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    47
    if(pt != null) {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    48
      float XRev = map(pt.getX(), realWidth, realHeight, WIDTH, HEIGHT);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    49
      float YRev = map(pt.getY(), realWidth, realHeight, WIDTH, HEIGHT);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    50
      adj = x - XRev;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    51
      opp = y - YRev;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    52
      dist = sqrt(opp*opp + adj*adj);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    53
      if(dist < PENSIZE) {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    54
        if(dist < 4) dist = PENSIZE;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    55
        mod = PENSIZE/dist;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    56
        xvel += mvelX*mod;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    57
        yvel += mvelY*mod;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    58
      }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    59
    }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    60
    if(randomGust > 0) {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    61
      adj = x - randomGustX;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    62
      opp = y - randomGustY;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    63
      dist = sqrt(opp*opp + adj*adj);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    64
      if(dist < randomGustSize) {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    65
        if(dist < RES*2) dist = randomGustSize;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    66
        mod = randomGustSize/dist;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    67
        xvel += (randomGustMax-randomGust)*randomGustXvel*mod;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    68
        yvel += (randomGustMax-randomGust)*randomGustYvel*mod;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    69
      }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    70
    }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    71
    xvel *= 0.99;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    72
    yvel *= 0.98;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    73
  }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    74
  
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    75
  void addcolour(int amt) {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    76
    col += amt;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    77
    if(col > 196) col = 196;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    78
  }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    79
  
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    80
  void display(int i, int u) {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    81
    float tcol = 0;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    82
    if(i>0 && i<lwidth-1 && u>0 && u<lheight-1) {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    83
      tcol = (+ v[i][u+1].col
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    84
      + v[i+1][u].col
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    85
      + v[i+1][u+1].col*0.5
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    86
      )*0.3;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    87
      tcol = (int)(tcol+col*0.5);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    88
    }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    89
    
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    90
    fill(255-tcol, 255-tcol, 255-tcol);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    91
    rect(x,y,RES,RES);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    92
    col = 0;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    93
  }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    94
}