xxxxxxxxxx
var voronoiPoints;
var maxPoints;
var startHue;
var hueRange;
var framesRequired = 180;
function setup() {
createCanvas(768, 768);
colorMode(HSB, 360);
background(0);
maxPoints = 12;
voronoiPoints = [];
startHue = 360 * random();
hueRange = 360;
// Populate Voronoi Points with xPos and yPos
for (var i = 0; i < maxPoints; i++) {
voronoiPoints.push([random(width) * random(), random(height) * random(), width - random(width) * random(), height - random(height) * random()]);
}
}
function draw() {
for (var i = 0; i < 4096; i += 1) {
var xPos = width * random();
var yPos = height * random();
var currentDistance = 999999;
var chosenPoint = 0;
for (var j = 0; j < maxPoints; j += 1) {
var xPoint = 0;
var yPoint = 0;
var currentProgress = (frameCount / framesRequired) % 1;
if (currentProgress < 0.5) {
xPoint = lerp(voronoiPoints[j][0], voronoiPoints[j][2], currentProgress * 2);
yPoint = lerp(voronoiPoints[j][1], voronoiPoints[j][3], currentProgress * 2);
} else {
xPoint = lerp(voronoiPoints[j][2], voronoiPoints[j][0], (currentProgress - 0.5) * 2);
yPoint = lerp(voronoiPoints[j][3], voronoiPoints[j][1], (currentProgress - 0.5) * 2);
}
var newDistance = (xPoint - xPos) * (xPoint - xPos) + (yPoint - yPos) * (yPoint - yPos);
if (newDistance < currentDistance) {
currentDistance = newDistance;
chosenPoint = j;
}
}
push();
translate(xPos, yPos);
stroke(map(chosenPoint, 0, maxPoints, startHue, startHue + hueRange) % 360, 300, 360 - 90 * random() * random());
strokeWeight(8);
point(0, 0);
pop();
}
}