p5((sketch) => {
let system;
const fc = sketch.color(fillColor),
width = 640,
height = 400;
sketch.setup = function () {
sketch.createCanvas(width, height);
sketch.textAlign(sketch.CENTER);
sketch.textFont("sans-serif");
sketch.textStyle(sketch.BOLD);
sketch.strokeWeight(0.5);
};
sketch.draw = function () {
sketch.background(viewof background.valueAsNumber);
sketch.scale(height / 100, height / 100);
sketch.translate(0 + ((width / height - 1) * 100) / 2, 0);
let seconds = sketch.millis() / 1000;
let draw = (foo) => {
sketch.push();
foo();
sketch.pop();
};
draw(() => {
let t = 5,
radians = Math.PI * 2 * ((seconds / t) % 1),
fill = parseInt((0.5 + Math.sin(radians) * 0.5) * 256);
sketch.translate(0, 100);
sketch.rotate(radians);
sketch.stroke(fc).strokeWeight(0.2);
sketch.fill(fill);
sketch.ellipse(0, 0, 10, 20);
});
draw(() => {
sketch.stroke("black");
sketch.noFill();
sketch.square(0, 0, 100);
});
draw(() => {
let text = seconds.toFixed(2) + " | " + computingHull.notUpdatingSteps;
sketch.translate(100, 100);
sketch.fill(fc).textSize(5).textAlign(sketch.LEFT);
sketch.text(text, 0, 0);
});
draw(() => {
sketch.fill(fillColor + "aa");
sketch.beginShape();
hull.map((d) => {
sketch.vertex(d.x, d.y);
});
sketch.endShape(sketch.CLOSE);
});
draw(() => {
sketch.fill("#3335");
sketch.noStroke();
let extent = d3.extent(computingHull.f1f2Trace, (d) => d.area),
scale = d3.scaleLinear().domain(extent).range([0, 255]),
c;
computingHull.f1f2Trace.map(({ f1, f2, area }) => {
c = scale(area);
sketch.fill(c, c, c, 100);
sketch.ellipse(f1.x, f1.y, 1, 1);
sketch.ellipse(f2.x, f2.y, 1, 1);
});
});
draw(() => {
let ellipse = computingHull.largestEllipse;
let { o, radian, a, b, f1, f2 } = ellipse;
sketch.noFill();
sketch.ellipse(f1.x, f1.y, 3, 3);
sketch.ellipse(f2.x, f2.y, 3, 3);
sketch.translate(o.x, o.y);
sketch.rotate(radian);
sketch.ellipse(0, 0, a * 2, b * 2);
});
};
})