add another level of point filtering/reduction
This commit is contained in:
parent
29ae84380c
commit
ab2e2f7987
2 changed files with 36 additions and 3 deletions
|
|
@ -139,10 +139,11 @@ var gs_base_gyroid = exports;
|
||||||
} while (added);
|
} while (added);
|
||||||
} while (cleared < sparse.length);
|
} while (cleared < sparse.length);
|
||||||
|
|
||||||
return {edge, points, dir, polys: polys.map(poly => filter(poly))};
|
return {edge, points, dir, polys: polys.map(poly => filter(poly,inc))};
|
||||||
}
|
}
|
||||||
|
|
||||||
function filter(poly) {
|
// merge x/y co-linear
|
||||||
|
function filter(poly,inc) {
|
||||||
if (poly.length === 1) {
|
if (poly.length === 1) {
|
||||||
return poly;
|
return poly;
|
||||||
}
|
}
|
||||||
|
|
@ -169,6 +170,38 @@ var gs_base_gyroid = exports;
|
||||||
}
|
}
|
||||||
e1 = el;
|
e1 = el;
|
||||||
}
|
}
|
||||||
|
return filter2(nuchain,inc);
|
||||||
|
}
|
||||||
|
|
||||||
|
// merge points within radius
|
||||||
|
function filter2(poly,inc) {
|
||||||
|
if (poly.length === 1) {
|
||||||
|
return poly;
|
||||||
|
}
|
||||||
|
let nuchain = [];
|
||||||
|
let e1 = poly[0];
|
||||||
|
let e2 = null;
|
||||||
|
let last = poly.length - 1;
|
||||||
|
let merge = inc;
|
||||||
|
for (let i=1; i<poly.length; i++) {
|
||||||
|
let el = poly[i];
|
||||||
|
if (dist(e1, el) <= merge) {
|
||||||
|
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;
|
return nuchain;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
var exports = {
|
var exports = {
|
||||||
COPYRIGHT:"Copyright (C) 2014-2019 Stewart Allen <sa@grid.space> - All Rights Reserved",
|
COPYRIGHT:"Copyright (C) 2014-2019 Stewart Allen <sa@grid.space> - All Rights Reserved",
|
||||||
LICENSE:"See the license.md file included with the source distribution",
|
LICENSE:"See the license.md file included with the source distribution",
|
||||||
VERSION:"1.2.6a"
|
VERSION:"1.2.6b"
|
||||||
};
|
};
|
||||||
if (!module) var module = {};
|
if (!module) var module = {};
|
||||||
module.exports = exports;
|
module.exports = exports;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue