smooth gyroid poly lines

This commit is contained in:
Stewart Allen 2019-01-21 16:19:48 -05:00
commit 29ae84380c
3 changed files with 65 additions and 2 deletions

View file

@ -192,9 +192,42 @@
} while (added);
} while (cleared < sparse.length);
// simplify poly
polys = polys.map(poly => filter(poly));
return zcache[zkey] = {edge, points, dir, polys};
}
function filter(poly) {
if (poly.length === 1) {
return poly;
}
let nuchain = [];
let e1 = poly[0];
let e2 = null;
let last = poly.length - 1;
for (let i=1; i<poly.length; i++) {
let el = poly[i];
if (e1.x === el.x || e1.y === el.y) {
e2 = el;
if (i < last) {
continue;
}
}
if (e2) {
nuchain.push({x:(e1.x + e2.x)/2, y:(e1.y + e2.y)/2});
e2 = null;
} else {
nuchain.push(e1);
if (i === last) {
nuchain.push(el);
}
}
e1 = el;
}
return nuchain;
}
function dist(a, b, dir) {
let dx = a.x - b.x;
let dy = a.y - b.y;