Processing Typocraphy connected particles

2015-10-11 Typography Particles connected "Choose life" -_-

by schrodingers

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/processing.js/1.4.13/processing.min.js"></script>
<canvas></canvas>

CSS

</style> <script type="text/javascript"> window.addEventListener('load', function() {
    var scripts=document.body.getElementsByTagName('script');
    var canvases=document.body.getElementsByTagName('canvas');
    new Processing(canvases[0], scripts[0].text);
}
, false);
 // Here prevent javascript in body from throwing error </script> <style>

JavaScript

/*
 title: Typography Particles connected "Choose life" -_- 
 date: 2015-10-11
 */
//color[] clrs = {#47D0BD, #DAEC8B, #FFFDD6, #FF5DA2};
ArrayList <Point> points = new ArrayList <Point>();
int maxPoints = 400;
int lengthLimit = 20;
String word = "Choose life";
PGraphics pg;

void setup() {
    size(800, 600);
    colorMode(HSB, 360, 100, 100, 100);
    blendMode(ADD);
    setOffScreen();
    initObjects();
}

void initObjects() {
    points.clear();
    for (int i = 0; i < maxPoints; i++) {
        points.add(new Point());
    }
}

void setOffScreen() {
    pg = createGraphics(width, height);
    pg.beginDraw();
    pg.fill(0);
    pg.textSize(100);
    pg.textAlign(CENTER);

    pg.text(word, random(pg.textWidth(word), pg.width - (pg.textWidth(word) * 2)), random(100, pg.height - 100));
    pg.endDraw();
}

void draw() {
    background(200, 99, 10);

    for (Point p: points) {
        p.update();
        p.display();
    }

    for (int i = 0; i < points.size(); i++) {
        Point a = points.get(i);
        for (int j = i + 1; j < points.size(); j++) {
            Point b = points.get(j);
            float dist = PVector.dist(a.loc, b.loc);
            if (dist < lengthLimit) {
                strokeWeight(0.5);
                stroke(a.col);
                line(a.loc.x, a.loc.y, b.loc.x, b.loc.y);
            }
        }
    }
}

void mousePressed() {
    setOffScreen();
    for (Point p: points) {
        p.getTargetVelocity();
    }
}

void keyPressed() {
    if (keyCode == UP) {
        maxPoints += 100;
        initObjects();
    }
    if (keyCode == DOWN) {
        maxPoints -= 100;
        initObjects();
    }
    if (keyCode == RIGHT) lengthLimit += 5;
    if (keyCode == LEFT) lengthLimit -= 5;
    if (key == 's' || key == 'S') {
        saveFrame("pic-##.png");
        println("[" + hour() + ":" + minute() + "] " + "Picture saved.");
    }
    for (Point p: points) {
        p.col = color(random(150, 250), 80, 40, random(80, 100));
   ...