chaos/js/chaos.js

38 lines
1.0 KiB
JavaScript

/*jslint plusplus: true */
/*globals self, importScripts, utils */
(function () {
'use strict';
importScripts('utils.js');
function getRandomPoint(w, h) {
return [utils.getRandomArbitary(0, 1) * w, utils.getRandomArbitary(0, 1) * h];
}
self.addEventListener('message', function (e) {
var points = [], vertices = e.data[2], size = e.data[1], point, pointSkip = 100,
i = parseInt(e.data[0], 10) + pointSkip, j, length = vertices.length,
frac = e.data[3], cvert, numvertex, correction;
correction = 1 / frac - 1; // make points fit in the container
point = getRandomPoint(size[0], size[1]);
do {
numvertex = utils.getRandomInt(0, vertices.length - 1);
cvert = vertices[numvertex];
point = [(cvert[0] + point[0]) * (frac), (cvert[1] + point[1]) * (frac)];
if (i > pointSkip) { // skip the first few points
points.push([
[
point[0] * correction,
point[1] * correction
], numvertex
]);
}
} while (i--);
self.postMessage(points);
}, false);
}());