Create a gist now

Instantly share code, notes, and snippets.

Embed
What would you like to do?
import java.util.ArrayList;
import java.util.List;
import processing.core.PVector;
List<Bug> bugs = new ArrayList<Bug>();
int w = 500;
abstract class Actor {
protected PVector pos;
protected float rot;
protected float sc;
Actor(PVector pos, float rot, float sc) {
this.pos = pos;
this.rot = rot;
this.sc = sc;
}
public void draw() {
step();
pushMatrix();
pushStyle();
translate(pos.x, pos.y);
rotate(rot);
scale(sc);
detail();
popStyle();
popMatrix();
}
public void detail();
public void step();
}
class Bug extends Actor {
final int index;
final color c;
Bug(int index, color c, PVector pos, float rot, float sc) {
super(pos, rot, sc);
this.index = index;
this.c = c;
}
public void step() {
float dr = map(noise(frameCount/100f, index), 0, 1, radians(-6), radians(4.5f));
rot += dr;
float d = noise(frameCount/200f, index+0.1f);
pos.x += d * cos(rot);
pos.y += d * sin(rot);
}
public void detail() {
noStroke();
fill(c);
ellipse(0, 0, 1.9f, 2);
fill(0, 0, 0);
ellipse(0.5f, 0.2f, 0.3f, 0.2f);
ellipse(0.5f, -0.2f, 0.3f, 0.2f);
strokeWeight(0.05f);
noFill();
stroke(0);
arc(0, 0, 1.7f, 1.0f, -0.3f, 0.3f);
}
}
public void setup() {
for (int i = 0; i < 50; i++) {
bugs.add(new Bug(i,
color(100 + random(100), 100 + random(100), 100 + random(100), random(80, 200)),
new PVector(random(-0.3f * w, 0.3f * w), random(-0.3f * w, 0.3f * w)),
random(TWO_PI),
10 + random(20)
));
}
smooth();
size(w, w);
}
public void draw() {
translate(w / 2, w / 2);
background(200);
for (Bug b : bugs) {
b.draw();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment