4
click if you enjoy

PGraphics paintlayer;
PVector[] nodes;
boolean curved = false;
void setup(){
colorMode(HSB);
// hue / sat / bri
size(600,600);
background(255);
paintlayer = createGraphics(width,height);
paintlayer.colorMode(HSB);
// initalize nodes // vary with amount here!
nodes = new PVector[33];
for(int i=0; i<nodes.length; i++){
nodes[i] = new PVector();
}
}
void draw(){
// calculate all positions of all nodes -----------
float abit = TWO_PI/nodes.length;
for(int i=0; i<nodes.length; i++){
float offx = sin( millis()*.00012 )*168;
float offy = cos( millis()*.000123 )*160;
float x = sin(abit*i)*110+ offx;
float y = cos(abit*i)*110+ offy;
x += sin(millis()*.00051+ i*2.2)*233;
y += cos(millis()*.000513+ i*1.2)*222;
nodes[i].x = x;
nodes[i].y = y;
}
// draw shape by nodes -----------
paintlayer.beginDraw();
paintlayer.noFill();
paintlayer.fill(255,4);
paintlayer.colorMode(HSB);
float hue = (sin(millis()*.0001)+1)*127;
float sat = 222;
float bri = 222;
paintlayer.stroke(hue,sat,bri,42);
paintlayer.strokeWeight(2);
paintlayer.translate(paintlayer.width/2,paintlayer.height/2);
paintlayer.beginShape();
for(int i=0; i<nodes.length ; i++){
paintlayer.vertex(nodes[i].x,nodes[i].y);
}
paintlayer.endShape(CLOSE);
paintlayer.endDraw();
// draw the painted layer itself
image(paintlayer,0,0);
}
void mousePressed(){
// create special effect ;)
paintlayer.beginDraw();
paintlayer.filter(BLUR,2);
paintlayer.filter(INVERT);
paintlayer.filter(BLUR,2);
paintlayer.endDraw();
}