var circleCount = 60 / 1;
var fadeArea = circleCount / fadeDiv;
var fadeStart = circleCount - fadeArea;
createCanvas(windowWidth, windowHeight);
for (var i = 0; i < snakeCount; i++)
for (var j = 0; j < 8; j += 2)
ofs[i][j] = 1.0 + random(10, 30)
ofs[i][j + 1] = random(-PI, PI)
for (var i = 0; i < circleCount; i++)
colorTable[i] = [0.0, 0.0, 0.0];
var x = i / (fadeArea - 1);
fadeTable[i] = cos(x * PI - PI) * 0.5 + 0.5;
for (var j = 0; j < snakeCount; j++)
positionTable[j][i] = [ 0.0, 0.0 ];
for (var i = 0; i < circleCount; i++)
var sz = (circleCount - i) * circleSize;
var fidx = i / (circleCount - 1);
var z = 1.0 + 0.2 * fidx;
(sin(fidx * cc + time * colorSpeed + 0.2 * PI) * 127 + 127) * fadeTable[i],
(sin(fidx * cc + time * colorSpeed + 0.2 * PI) * 127 + 127) * fadeTable[i],
(sin(fidx * cc + time * colorSpeed + 0.2 * PI) * 127 + 127) * fadeTable[i]
for (var j = 0; j < snakeCount; j++)
ellipse(width / 2 + positionTable[j][i][0] * z, height / 2 + positionTable[j][i][1] * z, sz, sz);
for (var i = 0; i < circleCount - 1; i++)
colorTable[i] = colorTable[i + 1];
for (var j = 0; j < snakeCount; j++)
positionTable[j][i] = positionTable[j][i + 1];
colorTable[i] = [ sin(time * colorSpeed), sin(time * colorSpeed + 1.333 * PI) * 127 + 300, sin(time * colorSpeed + 0.666 * PI) * 127 + 127 ];
for (var i = 0; i < snakeCount; i++)
positionTable[i][circleCount - 1] =
[ (sin(time * ofs[i][0] + ofs[i][1]) + cos(time * ofs[i][2] + ofs[i][3])) * radius,
(cos(time * ofs[i][4] + ofs[i][5]) + sin(time * ofs[i][6] + ofs[i][7])) * radius ];