Compute boundingBox
by microbians
HTML
<html>
<body>
</body>
</html>
CSS
body {
background:white;
color:black;
font-family:sans-serif;
}
JavaScript
// Array shit
minOfArray = function() {
return this.reduce((m, p) => p < m ? p : m, this[0]);
}
maxOfArray = function() {
return this.reduce((m, p) => p > m ? p : m, this[0]);
}
// Randmo shit
Math._random = Math.random;
Math.random = function(min, max) {
if (max == undefined) { return Math._random()*min; }
return Math._random() * (max - min) + min;
}
random=Math.random;
Math.randomInt = function(min, max) {
if (max == undefined) {
max = Math.floor(min);
min = 0;
} else {
min = Math.ceil(min);
max = Math.floor(max);
}
return Math.floor(Math._random() * (max - min + 1)) + min;
}
randomInt=Math.randomInt;
// TRY BIGGER NUMBERS!!
num=50000;
document.body.innerHTML+="<h2>Computing "+num+" boundingBoxes</h2>"
// THE THING
elements=[];
var txt ='<textarea style="width:500px; height:300px;">';
for (i=0; i<num; i++) {
elements.push( { x1:Math.randomInt(0,1000000), y1:Math.randomInt(0,10000000), x2:Math.randomInt(0,10000000), y2:Math.randomInt(0,10000000)});
if (i<10) txt+=i+": {x1:"+ elements[i].x1 + ", y1:"+ elements[i].y1 + ", x2:"+ elements[i].x2 + ", y2:"+ elements[i].y2 + "} ";
}
txt+="[ ... ] and "+ (num-20) +" more ";
for (i=num-10; i<num; i++) {
txt+=i+": {x1:"+ elements[i].x1 + ", y1:"+ elements[i].y1 + ", x2:"+ elements[i].x2 + ", y2:"+ elements[i].y2 + "} ";
}
txt+="</textarea><br/>";
var d = new Date();
var n1 = d.getTime();
console.log(n1)
boundingBox = {
x1:minOfArray.call(Array.prototype.slice.call(elements.map(e => e.x1))),
y1:minOfArray.call(Array.prototype.slice.call(elements.map(e => e.y1))),
x2:maxOfArray.call(Array.prototype.slice.call(elements.map(e => e.x2))),
y2:maxOfArray.call(Array.prototype.slice.call(elements.map(e => e.y2))),
}
var d = new Date();
var n2 = d.getTime();
document.body.innerHTML+="<strong>Resulting boundingBox → {x1:"+ boundingBox.x1 + ", y1:"+ boundingBox.y1 + ", x2:"+ boundingBox.x2 + ", y2:"+ boundingBox.y2 +...