xxxxxxxxxx
/* WCCC Challenge Topic Pressure
lilagondwana
*/
int m = 4;
int n = 250;
int l = 20;
float b = 500;
int pp = 150;
float [][][] x = new float [m][n][l];
float [][][] y = new float [m][n][l];
float [][][] xn = new float [m][n][l];
float [][][] yn = new float [m][n][l];
float [] dx = {1,0,-1,0};
float [] dxs = {-b/2,b/2,b/2,-b/2};
float [] dy = {0,1,0,-1};
float [] dys = {-b/2,-b/2,b/2,b/2};
int [] nn = new int[m];
float [] tz = new float [m];
void setup(){
size(600,600);
strokeWeight(2);
fill(random(256),random(256),random(256),40);
float bb = 1.0;
for(int k=0; k<l; k++){
for(int i=0; i<m; i++){
x[i][0][k]=bb*dxs[i];
xn[i][0][k]=x[i][0][k];
y[i][0][k]=bb*dys[i];
yn[i][0][k]=y[i][0][k];
for(int j=1; j<n; j++){
x[i][j][k]=x[i][j-1][k]+bb*(b/n*dx[i]);
y[i][j][k]=y[i][j-1][k]+bb*(b/n*dy[i]);
xn[i][j][k]=x[i][j][k];
yn[i][j][k]=y[i][j][k];
}
}
bb*=(0.92-0.01*k);
}
for(int i=0; i<m; i++){
nn[i]=int(random(int(pp/2),n-int(pp/2)));
tz[i]=random(30,100);
}
}
void draw(){
background(220);
translate(width/2,height/2);
strokeWeight(1);
stroke(32, 64);
for(int k=0; k<l; k++){
beginShape();
for(int i=0; i<m; i++){
for(int j=0; j<n; j++){
vertex(x[i][j][k],y[i][j][k]);
}
}
endShape(CLOSE);
}
for(int p=0; p<m; p++){
float bc=1.0;
for(int k =0; k<l; k++){
for(int i=0; i<pp; i+=4){ // i++
x[p][nn[p]-int(pp/2)+i][k]=xn[p][nn[p]-int(pp/2)+i][k]+bc*tz[p]*abs(sin(PI/45*frameCount))*sin(PI/pp*i)*dx[(p+1)%4];
y[p][nn[p]-int(pp/2)+i][k]=yn[p][nn[p]-int(pp/2)+i][k]+bc*tz[p]*abs(sin(PI/60*frameCount))*4*sin(PI/pp*i)*dy[(p+1)%4]; // added 4*
}
bc*=0.9;
}
}
if (frameCount%60==0) {
for(int i=0; i<m; i++){
nn[i]=int(random(int(pp/2),n-int(pp/2)));
tz[i]=random(30,100);
}
}
}