umxprime lab Carnet de bricodage

30juin/110

Études | 1 : Process 7 bis (Processing, Win/OSX/Linux, 2006)

Process 7 Bis

En 2006, pendant mes études à l'École Supérieure d'Art de Cambrai, j'ai écris plusieurs programmes avec Processing.

L'un d'entre eux reprenait la procédure de dessin Process 7 (2005) écrite par Casey Reas dans son Process Compendium.

Mais pourquoi reprendre le processus d'un autre et coder cette idée soi-même ? Simple exercice ? Travail appliqué ? Passage obligé ?

Le processus de Reas donnait lieu à des images fixes.

Mais il m'intéressait davantage de donner lieu à des images animées...
Je m'étais donc permis de faire écho à l'idée de Réas en y ajoutant du mouvement.

J'ai retrouvé le code dans mes archives :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
int stageWidth=720;
int stageHeight=576;
int partNum=300;
boolean saving = true;
int frameNum=0;
int frameMin=0;
int frameMax=2500;
int fps=5;
Particle[] Pobject=new Particle[partNum];
void setup(){
  size(stageWidth,stageHeight,P3D);
  background(0);
  for(int i=0;i<partNum;i++){
    Pobject[i]=new Particle();
  }
  frameRate(fps);
}
void draw(){
  for(int i=0;i<partNum;i++){
    Pobject[i].Move();
  }
 
  for(int i=0;i<partNum;i++){
    stroke(0);
 
    for(int j=i+1;j<partNum;j++){
      float diffX=Pobject[i].px-Pobject[j].px;
      float diffY=Pobject[i].py-Pobject[j].py;
      float medX=(Pobject[i].px+Pobject[j].px)/2;
      float medY=(Pobject[i].py+Pobject[j].py)/2;
      float pDist=sqrt(diffX*diffX+diffY*diffY);
      float pAngle=atan2(diffY,diffX);
      if(pDist<Pobject[i].pr/2+Pobject[j].pr/2){
        float lineColor=floor(pDist/((Pobject[i].pr+Pobject[j].pr)/2)*5)*51;
        lineColor=(pDist/((Pobject[i].pr+Pobject[j].pr)/2)*255-105)/150*255;
        if(lineColor<0){
          lineColor=0;
        }
        stroke(lineColor,100);
        line(Pobject[i].px,Pobject[i].py,Pobject[j].px,Pobject[j].py);
 
        noFill();
        stroke(255,(100-pDist/((Pobject[i].pr+Pobject[j].pr)/2)*100)/8);
 
        ellipse(Pobject[j].px, Pobject[j].py, Pobject[j].pr, Pobject[j].pr);
        ellipse(Pobject[i].px, Pobject[i].py, Pobject[i].pr, Pobject[i].pr);
 
        stroke(0);
        fill(0);
        ellipse(Pobject[j].px, Pobject[j].py, Pobject[j].pr/25, Pobject[j].pr/25);
        ellipse(Pobject[i].px, Pobject[i].py, Pobject[i].pr/25, Pobject[i].pr/25);
 
      }
    }
  }
  frameNum++;
  println("computing frame : "+frameNum);
  if (frameNum>frameMin && frameNum<frameMax && saving){
    println("saving frame : "+frameNum);
    saveFrame("render/frame-#####.png");
  }
}
class Particle {
  float px,py,pAngle,pDir,ps,pr;
  Particle(){
    px=random(stageWidth);
    py=random(stageHeight);
    pAngle=random(360);
    pDir=random(5)+5;
    pr=random(100)+20;
    if(random(1)<.5){
      ps=.5;
    } 
    else {
      ps=random(.2);
    }
    ps=random(1)+.1;
  }
  void Move(){
    px+=cos(pAngle/180*PI)*ps;
    py+=sin(pAngle/180*PI)*ps;
 
    if(random(1)<.5){
      pAngle+=pDir;
    } 
    else {
      pAngle-=pDir;
    }
    if(pAngle>360){
      pAngle-=360;
    }
    if(pAngle<0){
      pAngle+=360;
    }
    if(px<0){
      px=stageWidth-1;
    }
    if(px>stageWidth-1){
      px=0;
    }
    if(py<0){
      py=stageHeight-1;
    }
    if(py>stageHeight-1){
      py=0;
    }
  }
}

Commentaires (0) Trackbacks (0)

Aucun commentaire pour l'instant


Leave a comment

(required)

Trackbacks are disabled.