front_processing/src/Fluid_manipulation/Fluid_manipulation.pde
author bastiena
Fri, 06 Apr 2012 11:48:00 +0200
changeset 24 2bdf5d51d434
parent 10 925b7ee746e3
child 27 6c08d4d7219e
permissions -rw-r--r--
Front IDILL : TuioPoint class header modified in order to manage 3D points TuioContainer class header modified in order to manage 3D points TuioCursor class header modified in order to manage 3D points TuioClient class header modified in order to manage 3D points TuioClient class modified in order to manage 3D points client class header modified in order to manage 3D points client class modified in order to manage 3D points
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10
925b7ee746e3 Front Processing :
bastiena
parents: 9
diff changeset
     1
/*
8
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
// fluid3 by Glen Murphy.
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    11
// View the applet in use at http://bodytag.org/
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    12
// Code has not been optimised, and will run fairly slowly.
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    13
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    14
// Adjust the 'RES' variable below to change speed - higher is faster.
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    15
// Don't forget to change the size command in setup if changing the
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    16
// height/width.
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    17
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    18
import TUIO.*;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    19
TuioProcessing tuioClient;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    20
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    21
TuioPoint precPoint;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    22
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    23
//Port du Client TUIO.
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    24
int port = 80;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    25
//Limites de la zone de recherche pour les mains.
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    26
float minDistHands = 1;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    27
float maxDistHands = 1.5;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    28
//Paramètres de la fenêtre.
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    29
int WIDTH = 640;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    30
int HEIGHT = 480;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    31
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    32
int RES = 2;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    33
int PENSIZE = 30;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    34
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    35
int lwidth = WIDTH/RES;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    36
int lheight = HEIGHT/RES;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    37
int PNUM = 30000;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    38
vsquare[][] v = new vsquare[lwidth+1][lheight+1];
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    39
vbuffer[][] vbuf = new vbuffer[lwidth+1][lheight+1];
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    40
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    41
TuioPoint pt1, pt2, precPt1, precPt2;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    42
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    43
particle[] p = new particle[PNUM];
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    44
int pcount = 0;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    45
int mouse1Xvel = 0;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    46
int mouse1Yvel = 0;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    47
int mouse2Xvel = 0;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    48
int mouse2Yvel = 0;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    49
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    50
/*FONCTION D'INITIALISATION
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    51
Entrée :
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    52
Sortie : Création de la fenêtre et du client TUIO*/
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    53
public void setup()
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    54
{
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    55
    size (WIDTH, HEIGHT);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    56
    tuioClient = new TuioProcessing(this, port);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    57
    
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    58
    background(#666666);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    59
    noStroke();
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    60
    for(int i = 0; i < PNUM; i++)
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    61
    {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    62
        p[i] = new particle(random(RES,WIDTH-RES),random(RES,HEIGHT-RES));
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    63
    }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    64
    for(int i = 0; i <= lwidth; i++)
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    65
    {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    66
        for(int u = 0; u <= lheight; u++)
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    67
        {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    68
            v[i][u] = new vsquare(i*RES,u*RES);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    69
            vbuf[i][u] = new vbuffer(i*RES,u*RES);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    70
        }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    71
    }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    72
}
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    73
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    74
void draw()
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    75
{
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    76
    tuioInput();
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    77
    if(precPt1 != pt1 || precPt2 != pt2)
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    78
    {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    79
      int a1xvel = 0, a1yvel = 0, a2xvel = 0, a2yvel = 0;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    80
      if(precPt1 != null && pt1 != null)
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    81
      {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    82
        a1xvel = (int)pt1.getX()-(int)precPt1.getX();
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    83
        a1yvel = (int)pt1.getY()-(int)precPt1.getY();
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    84
        mouse1Xvel = (a1xvel != mouse1Xvel) ? a1xvel : 0;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    85
        mouse1Yvel = (a1yvel != mouse1Yvel) ? a1yvel : 0;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    86
      }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    87
      if(precPt2 != null && pt2 != null)
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    88
      {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    89
        a2xvel = (int)pt2.getX()-(int)precPt2.getX();
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    90
        a2yvel = (int)pt2.getY()-(int)precPt2.getY();
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    91
        mouse2Xvel = (a2xvel != mouse2Xvel) ? a2xvel : 0;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    92
        mouse2Yvel = (a2yvel != mouse2Yvel) ? a2yvel : 0;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    93
      }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    94
      
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    95
      for(int i = 0; i < lwidth; i++)
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    96
      {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    97
          for(int u = 0; u < lheight; u++)
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    98
          {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
    99
              vbuf[i][u].updatebuf(i,u);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   100
              v[i][u].col = 32;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   101
          }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   102
      }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   103
      for(int i = 0; i < PNUM-1; i++)
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   104
      {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   105
          p[i].updatepos();
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   106
      }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   107
      for(int i = 0; i < lwidth; i++)
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   108
      {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   109
          for(int u = 0; u < lheight; u++)
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   110
          {
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   111
              v[i][u].addbuffer(i, u);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   112
              v[i][u].updatevels(mouse1Xvel, mouse1Yvel, pt1);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   113
              if(pt2 != null)
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   114
                v[i][u].updatevels(mouse2Xvel, mouse2Yvel, pt2);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   115
              v[i][u].display(i, u);
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   116
          }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   117
      }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   118
      
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   119
      precPt1 = pt1;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   120
      precPt2 = pt2;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   121
    }
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   122
}
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   123
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   124
void update(TuioPoint _pt1, TuioPoint _pt2)
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   125
{
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   126
  pt1 = _pt1;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   127
  pt2 = _pt2;
e4e7db2435f8 Processing:
bastiena
parents:
diff changeset
   128
}