// // from processing.unlekker.net // Particle part[]; int num; int colors[][],colNum,colBG; boolean doSaveFrame=false,doSetBackground=true; void setup() { size(600,400); smooth(); rectMode(CENTER_RADIUS); ellipseMode(CENTER_DIAMETER); colors=new int[100][3]; addColor(255,255,255); for(int i=0; i<5; i++) addColor(0,100+i*20,255); addColor(100,50,0); addColor(255,50,0); addColor(255,100,0); addColor(255,150,0); // colNum=0; // for(int i=0; i<20; i++) addColor(i*12,i*12,i*12); /* colNum=0; for(int i=0; i<20; i++) addColor(i*12,i*12,i*12); */ colBG=0; //((int)random(10000))%colNum; num=30; part=new Particle[num]; for(int i=0; i50) { rot=3; age=30; speed=1; } else { rot=-2; age=45; speed=0.5; } rot=radians(rot); } else { state=LINE; rot=0; speed=random(2)+0.25; age=(int)random(50)+20; if(random(100)>90) age+=50; } } void init() { v.set(random(width),random(height)); dir.set(1,0); dir.rotate(radians(30));//random(PI*2)); do { col=((int)random(10000))%colNum; } while(col==colBG); col=((int)random(10000))%(colNum-1)+1; initState(CIRCLE); if(random(100)<90) rad=2; else rad=(int)(8+random(5)); } void update() { vOld.set(v); dir.rotate(rot); v.add(dir.x*speed,dir.y*speed); age--; if(age==0) initState(state); if(v.x<0 || v.x>width || v.y<0 || v.y>height) { if(v.x<0) v.x=width; else if(v.x>width) v.x=0; if(v.y<0) v.y=height; else if(v.y>height) v.y=0; vOld.set(v); } noFill(); fill(colors[col][0],colors[col][1],colors[col][2]); ellipse(v.x,v.y, rad,rad);//3,3); // line(vOld.x,vOld.y,v.x,v.y);//, 2,2); if(cnt%100==0) { noFill(); fill(colors[col][0],colors[col][1],colors[col][2]); ellipse(v.x,v.y, rad,rad); } cnt++; if(cnt%2500<10) dir.rotate(radians(4.5f)); // for(int i=0; i