An initial experiment with Voronoi diagrams. The points for the cells are randomly generated and each cell has a random color brightness applied.
<script src="/pixelbits/js/rhill-voronoi-core.min.js"></script>
<script type="text/paperscript" canvas="canvas-0014">
var voronoi = new Voronoi();
var bbox = {
xl: 0,
xr: view.bounds.width,
yt: 0,
yb: view.bounds.height
};
var sites = generateRandomPoints(70);
var diagram = voronoi.compute(sites, bbox);
var baseColor = new Color('#3d9970');
var strokeColor = new Color(0, 0, 0, 0.2);
if (diagram) {
for (var i = 0, l = sites.length; i < l; i++) {
var cell = diagram.cells[sites[i].voronoiId];
if (cell) {
var halfedges = cell.halfedges,
length = halfedges.length;
if (length > 2) {
var points = [];
for (var j = 0; j < length; j++) {
v = halfedges[j].getEndpoint();
points.push(new Point(v));
}
createPath(points);
}
}
}
}
function generateRandomPoints(count) {
var points = [];
for (var i=0; i<count; i++) {
x = getRandomInt(0, view.size.width);
y = getRandomInt(0, view.size.height);
points[i] = {'x':x, 'y':y};
}
return points;
}
function createPath(points) {
var path = new Path();
path.fillColor = generateColor(baseColor);
path.strokeColor = strokeColor;
path.closed = true;
for (var i=0, l=points.length; i < l; i++) {
path.add(points[i]);
}
return path;
}
function generateColor(baseColor) {
var newColor = baseColor;
var adjustment = getRandomInt(0, 10);
newColor.brightness += adjustment / 1000;
return newColor;
}
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
</script>
<canvas id="canvas-0014"></canvas>