38 lines
1.0 KiB
JavaScript
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);
|
||
|
}());
|