in toolkit/jb/shared.js [449:502]
function collectPointData(pixels, config) {
var srcPixels = pixels.values;
if (!srcPixels || !srcPixels.length) return [];
var step = Math.floor(config.step || pixels.step);
if (!step) return [];
var chaos = config.chaos / 100;
var d = pixels.density;
var srcWidth = pixels.width;
var srcHeight = pixels.height;
var low = config.low;
var high = config.high;
var dsrcWidth = srcWidth * d;
var dsrcHeight = srcHeight * d;
var maxPoints = dsrcWidth * dsrcHeight * 4;
/* console.log('collectPointData', dsrcWidth, 'x', dsrcHeight, 'pixels length', srcPixels.length,
'expected length', maxPoints); */
var idx, pxBrightness, r, g, b, a;
var lastPoint;
var pointData = [];
var xpos, ypos;
for (var x = 0; x < srcWidth; x += step) {
for (var y = 0; y < srcHeight; y += step) {
// console.log('y', y, pointData.length >= maxPoints);
pxBrightness = pixelBrightnessByCoords(x, y, srcPixels, srcWidth, d);
if ((pxBrightness > low) && (random(0, pxBrightness) < high)) {
xpos = x + random(-step / 2, step / 2) * chaos;
ypos = y + random(-step / 2, step / 2) * chaos;
pointData.push([ xpos, ypos, pxBrightness ]);
if (pointData.length >= maxPoints) break;
}
}
}
return pointData;
}