cutter = {
let rotate = projection.rotate();
projection.rotate([0, 0]);
const cutter = [];
for (const face of structure.faces) {
const pts = face.face.map(e => d3.geoInterpolate(e, face.centroid)(1e-5));
const corners = pts.map(projection),
points = [];
for (let i = 0; i <= n; i++) {
for (let j = 0; j <= i; j++) {
const c = [n - i, i - j, j].map(d => d / n);
points.push([
c[0] * corners[0][0] + c[1] * corners[1][0] + c[2] * corners[2][0],
c[0] * corners[0][1] + c[1] * corners[1][1] + c[2] * corners[2][1]
]);
}
}
const delaunay = d3.Delaunay.from(points),
triangles = Array.from(delaunay.trianglePolygons()).filter(
d => d3.polygonArea(d) > 10
);
cutter.push(...triangles);
}
projection.rotate(rotate);
return cutter;
}