Skip to content

Instantly share code, notes, and snippets.

@brycec
Created January 26, 2019 11:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brycec/583cfa0ffdcda1a7cb52f4354400ff1e to your computer and use it in GitHub Desktop.
Save brycec/583cfa0ffdcda1a7cb52f4354400ff1e to your computer and use it in GitHub Desktop.
rainbow boids in processing
float[][] p = new float[300][4];
void setup() {
w=screen.width-1;
h=screen.height-80;
size(w,h);
acc=0.0006;
for(i=0;i<p.length;i++){
p[i][0] = random(0,w);
p[i][1] = random(0,h);
p[i][2] = 0;
p[i][3] = 0;
}
background(0);
colorMode(HSB);
}
void draw() {
noStroke();
fill(0);
reach=60+mouseX;
size=30+mouseY;
for(q=0;q<p.length;q++){
i=q;//int(random(0,p.length));
p[i][3]-=-0.001+(p[i][1]-(h/2))*acc*4;
p[i][0]+=p[i][2];
p[i][1]+=p[i][3];
for(ii=0;ii<p.length;ii++){
d=dist(p[i][0], p[i][1],
p[ii][0], p[ii][1]);
if(d<reach&&d>size+10){
p[ii][2]-=(p[ii][0]-p[i][0])*acc;
p[ii][3]-=(p[ii][1]-p[i][1])*acc;
}else if(d<size&&d>0){
p[ii][2]+=1/(p[ii][0]-p[i][0])*acc;
p[ii][3]+=1/(p[ii][1]-p[i][1])*acc;
} else if(d>size&&d<size+2){
p[ii][2]=(p[i][2]+p[ii][2])/2;
p[ii][3]=(p[i][3]+p[ii][3])/2;
}
}
}
for(i=0;i<p.length;i++){
p[i][0]=constrain(p[i][0],1,w);
p[i][1]=constrain(p[i][1],1,h);
if(p[i][0]>=w||p[i][0]<=1) {
p[i][2]=-p[i][2]/2;
}
if(p[i][1]>=h||p[i][1]<=1) {
p[i][3]=-p[i][3]/2;
}
stroke(p[i][1]%255,255,255);
strokeWeight(1+(abs(p[i][2])+abs(p[i][3]))/2);
line(p[i][0],p[i][1],
p[i][0]-p[i][2]*10,p[i][1]-p[i][3]*10);
}
loadPixels();
for(i=0;i<pixels.length;i++){
pi=pixels[i];
pixels[i]=lerpColor(pi,
color(hue(pi),saturation(pi),0),
0.1);
}
updatePixels();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment