55 lines
1.3 KiB
JavaScript
55 lines
1.3 KiB
JavaScript
function setup() {
|
|
createCanvas(400, 400);
|
|
background(220);
|
|
|
|
let balls = []; // 20 objects
|
|
for (let i = 0; i < 20; i++) {
|
|
// with random position and size (from 10-50)
|
|
// [Your Code Here]
|
|
random_size = random(10, 50);
|
|
balls.push([
|
|
random(0 + random_size / 2, 400 - random_size / 2),
|
|
random(0 + random_size / 2, 400 - random_size / 2),
|
|
random_size,
|
|
]);
|
|
}
|
|
|
|
drawBalls(balls);
|
|
drawBoundingBox(balls);
|
|
}
|
|
|
|
function drawBalls(balls) {
|
|
// [Your Code Here]
|
|
num_balls = balls.length;
|
|
|
|
for (let i = 0; i < num_balls; i++) {
|
|
circle(balls[i][0], balls[i][1], balls[i][2]);
|
|
}
|
|
}
|
|
|
|
// draws smallest rect fitting all balls
|
|
function drawBoundingBox(balls) {
|
|
// [Your Code Here]
|
|
box_top = 99999;
|
|
box_left = 9999999;
|
|
box_bottom = -1;
|
|
box_right = -1;
|
|
|
|
num_balls = balls.length;
|
|
for (let i = 0; i < num_balls; i++) {
|
|
circle_left = balls[i][0] - balls[i][2] / 2;
|
|
circle_right = balls[i][0] + balls[i][2] / 2;
|
|
circle_top = balls[i][1] - balls[i][2] / 2;
|
|
circle_bottom = balls[i][1] + balls[i][2] / 2;
|
|
|
|
box_top = min(box_top, circle_top);
|
|
box_left = min(box_left, circle_left);
|
|
box_bottom = max(box_bottom, circle_bottom);
|
|
box_right = max(box_right, circle_right);
|
|
}
|
|
|
|
noFill();
|
|
stroke('red');
|
|
rect(box_left, box_top, box_right - box_left, box_bottom - box_top);
|
|
}
|