let myData;
let table;
function preload() {
myData = loadTable("/assets/manholes.csv");
}
function setup() {
createCanvas(600, 600);
table = myData.getArray();
stroke(0, 50, 70);
strokeWeight(1.4);
noLoop();
maxX = 0;
minX = 9999999999999999;
maxY = 0;
minY = 9999999999999999;
points = [];
for (let i = 1; i < table.length; i++) {
valX = table[i][0];
valY = table[i][1];
points[i - 1] = [table[i][0], table[i][1]];
if (valX > maxX) {
maxX = valX;
}
if (valX < minX) {
minX = valX;
}
if (valY > maxY) {
maxY = valY;
}
if (valY < minY) {
minY = valY;
}
}
let centroid = points.reduce(
(acc, val) => {
return [acc[0] + val[0] / points.length, acc[1] + val[1] / points.length];
},
[0, 0]
);
cx = map(centroid[0], minX, maxX, 100, width - 100);
cy = map(centroid[1], minY, maxY, height - 100, 100);
}
function draw() {
background(255);
for (let r = 1; r < table.length; r++) {
let x = table[r][0];
let y = table[r][1];
let plotX = map(x, minX, maxX, 100, width - 100);
let plotY = map(y, minY, maxY, height - 100, 100);
point(plotX, plotY);
}
fill(0, 50, 70);
beginShape();
vertex(0, 0);
vertex(0, width / 2);
r = width / 2 - 20;
for (let i = 0; i <= PI; i += 0.01) {
vertex(width / 2 - r * cos(i), width / 2 - r * sin(i));
}
vertex(width, width / 2);
vertex(width, 0);
endShape();
beginShape();
vertex(0, width);
vertex(0, width / 2);
r = width / 2 - 20;
for (let i = PI; i <= TWO_PI; i += 0.01) {
vertex(width / 2 + r * cos(i), width / 2 - r * sin(i));
}
vertex(width, width / 2);
vertex(width, width);
vertex(0, width);
endShape();
}