xxxxxxxxxx
int N = 150;
float distval = 45;
float dt = 0.15;
float rad = 200.0;
int nconMax = 5;
int quiescent = 180;
int warptime = 50;
particles[] particle = new particles[N];
color[] [] col = { {#00ce39, #2274a5, #f75c03, #f1c40f, #d90368},
{#1f2426, #960200, #ce6c47, #ffd046, #eadaa2},
{#780116, #f7b538, #780116, #db7c26, #1f2426},
{#1f2426, #fbfff1, #3d52d5, #090c9b, #3c3744} };
int cind = 0;
int indx = 1;
int wp = 0;
int type = 1;
int frac = N/2;
void setup() {
size(600,600);
background(25);
for (int i=0; i<N; ++i) {
particle[i] = new particles();
}
}
void draw() {
//-- I've put all the particle operations inside another function called updateParticles, so I can play with different dynamics
if (type==0){
updateParticles();
} else {
if (wp<warptime){
updateParticlesWarp(frac);
wp++;
} else {
type = 0;
wp = 0;
}
}
if (indx%quiescent==0) {
type = 1;
noStroke();
fill(25,225);
rect(0,0,width,height);
frac = int(random(20,N-20));
}
indx++;
}
void updateParticles() {
noStroke();
fill(25,60);
rect(0,0,width,height);
for (int i=0; i<N; ++i) {
particle[i].display(75);
particle[i].move(0.15);
particle[i].updateVelocity(random(2,4));
//particle[i].checkPeriodicityCircle();
particle[i].checkPeriodicity();
particle[i].phase += random(-1.0,1.0)*0.25;
particle[i].ncon = 0;
}
connect();
//-- Optional circle
//noFill();
//stroke(255,25);
//strokeWeight(0.5);
//ellipse(width/2,height/2,rad*2,rad*2);
}
void updateParticlesWarp(int fr) {
noStroke();
fill(25,40);
rect(0,0,width,height);
for (int i=0; i<fr; ++i) {
//if (flag==0){
// particle[i].vel.y = 0;
// particle[i].vel.x *= 2.0;
//} else if (flag==1){
// particle[i].vel.x = 0;
// particle[i].vel.y *= 2.0;
//}
particle[i].vel.y = 0;
particle[i].vel.x *= random(1.0,2.5);
particle[i].display(175);
particle[i].move(0.25);
particle[i].updateVelocity(random(20,30));
particle[i].checkPeriodicity();
particle[i].ncon = 0;
}
for (int i=fr; i<N; ++i) {
particle[i].vel.x = 0;
particle[i].vel.y *= random(1.0,2.5);
particle[i].display(175);
particle[i].move(0.25);
particle[i].updateVelocity(random(20,30));
particle[i].checkPeriodicity();
particle[i].ncon = 0;
}
//connect();
//-- Optional circle
//noFill();
//stroke(255,25);
//strokeWeight(0.5);
//ellipse(width/2,height/2,rad*2,rad*2);
}
void mousePressed() {
cind = (cind+1)%4;
for (int i=0; i<N; ++i) {
particle[i].rang = col[cind][int(random(5))];
}
}