Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ArrayList<Entity> entities = new ArrayList<Entity>();
- float eSize = 10;
- void setup() {
- size(600, 600);
- //fullScreen();
- for (int i = 0; i < 1; i++) {
- entities.add(new Entity(width/2 + random(-1, 1), height/2.0 + random(-1, 1), color(127)));
- }
- noStroke();
- }
- void draw() {
- background(51);
- for (int i = entities.size() - 1; i >= 0; i--) {
- Entity e = entities.get(i);
- e.update();
- if (!e.moved() && entities.size() < 2500){
- entities.add(new Entity(e.pos.x + random(-0.2, 0.2), e.pos.y + random(-0.2, 0.2), e.col));
- }
- }
- }
- class Entity {
- PVector pos;
- PVector oldPos;
- color col;
- Entity(float x, float y, color c) {
- pos = new PVector(x, y);
- oldPos = new PVector(0, 0);
- float r = red(c) * random(0.8, 1.25);
- float g = green(c) * random(0.8, 1.25);
- float b = blue(c) * random(0.8, 1.25);
- col = color(r,g,b);
- }
- void update() {
- updatePos();
- fill(col, 10);
- ellipse(pos.x, pos.y, eSize, eSize);
- fill(col);
- ellipse(pos.x, pos.y, eSize/2.0, eSize/2.0);
- }
- void updatePos() {
- oldPos = new PVector(pos.x, pos.y);
- PVector move = new PVector(0, 0);
- for (int i = 0; i < entities.size(); i++) {
- Entity en = entities.get(i);
- if (en != this) {
- float d = dist(pos.x, pos.y, en.pos.x, en.pos.y);
- if (d < eSize) {
- move.x += ((pos.x - en.pos.x)*(eSize - d));
- move.y += ((pos.y - en.pos.y)*(eSize - d));
- }
- }
- }
- pos.add(move.normalize().mult(0.2));
- }
- boolean moved() {
- if (oldPos.x == pos.x && oldPos.y == pos.y) {
- return false;
- } else {
- return true;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement