colorMode(HSB, 360, 100, 100);
w = new Walker[palette.length];
for (int i = 0; i <palette.length; i++) {
w[i] = new Walker(width/2, height/2, palette[i], 1);
for (int i = 0; i <palette.length; i++) {
if (frameCount%350 == 0) {
float stepVal, rand, sze, mx, my, s;
Walker(float sx, float sy, color col, int id) {
pos = new PVector(sx, sy);
prev = new PVector(pos.x, pos.y);
strokeWeight(random(0.1, 3));
line(pos.x, pos.y, prev.x, prev.y);
ellipse(pos.x, pos.y, s, s);
step.set(floor(random(-1, 2)), floor(random(-1, 2)));
if (rand < 0.1)stepVal *= 2;
else if (rand < 0.2)stepVal *= 3;
else if (rand < 0.3)stepVal *= 4;
if (step.x == 0 || step.y == 0)step.setMag(stepVal);
else step.setMag(stepVal * 1.414);
if (pos.x > mx + sze || pos.x < mx - sze || pos.y > my + sze || pos.y < my - sze) pos.set(prev);
int h0 = int(random(0, 360));
int h1 = (h0 + dst) % 360;
int h2 = (h0 + 2*dst) % 360;
int h3 = (h0 + 3*dst) % 360;
int h4 = (h0 + 4*dst) % 360;
sat = int(random(70, 100));
palette[0] = color(h0, sat, 100);
sat = int(random(20, 80));
palette[1] = color(h1, sat, 100);
sat = int(random(20, 80));
palette[2] = color(h2, sat, 100);
sat = int(random(20, 80));
palette[3] = color(h3, sat, 100);
sat = int(random(20, 80));
palette[4] = color(h4, sat, 100);