movers for drawing lines 3
@author
ArrayList<Mover> movers;
void setup(){
size(500, 500);
frameRate(120);
background(0);
movers = new ArrayList<Mover>();
for(int i = 0; i < 30; i++){
movers.add(new Mover());
}
background(255);
colorMode(HSB, 360, 100, 100);
}
void draw(){
translate(width / 2, height / 2);
for(int i = 0; i < movers.size() - 1; i++){
Mover m1 = movers.get(i);
for(int j = i + 1; j < movers.size(); j++){
Mover m2 = movers.get(j);
float hue = (m1.hue + m2.hue) / 2.0;
float saturation = (m1.saturation + m2.saturation) / 2.0;
stroke(hue, saturation, 100, 10);
line(m1.getX(), m1.getY(), m2.getX(), m2.getY());
}
}
for(Mover m: movers){
m.update();
}
}
class Mover{
PVector center;
float radious, radian, speed;
float hue, saturation;
Mover(){
float cRad = random(0, width);
float cAng = random(TWO_PI);
center = new PVector(cRad * cos(cAng), cRad * sin(cAng));
radious = random(50, 200);
radian = random(TWO_PI);
speed = random(-PI / 128, PI / 128);
hue = random(180, 240);
saturation = random(100);
}
void update(){
radian += speed;
if(radian < 0){
radian += TWO_PI;
}
if(radian > TWO_PI){
radian -= TWO_PI;
}
}
float getX(){
return center.x + radious * cos(radian);
}
float getY(){
return center.y + radious * sin(radian);
}
}