experimental extension of ease-down

This commit is contained in:
Stewart Allen 2021-02-24 15:19:26 -05:00
commit 90c5db97eb
2 changed files with 29 additions and 9 deletions

View file

@ -311,8 +311,10 @@
let { polyEmit, poly2polyEmit, depthRoughPath } = ops;
let { camOut, newLayer, printPoint } = ops;
let { settings, widget } = state;
let { process } = settings;
let { process, controller } = settings;
let danger = controller.danger;
let easeDown = process.camEaseDown;
let cutdir = process.camConventional;
let depthFirst = process.camDepthFirst;
let depthData = [];
@ -372,7 +374,9 @@
// return POLY.nest(level.filter(poly => poly.depth === 0));
return POLY.nest(level.filter(poly => poly.depth === 0).clone());
});
printPoint = depthRoughPath(printPoint, 0, depthData, tops, polyEmit);
// experimental start of ease down
let ease = danger && op.down && easeDown ? op.down : 0;
printPoint = depthRoughPath(printPoint, 0, depthData, tops, polyEmit, false, ease);
// printPoint = depthRoughPath(printPoint, 0, depthData, tops, (poly, index, count, start) => {
// console.log({z: poly.getZ(), i: poly.id, index, poly});
// return polyEmit(poly, index, count, start);
@ -542,8 +546,10 @@
let { polyEmit, poly2polyEmit, depthOutlinePath } = ops;
let { camOut, newLayer, printPoint } = ops;
let { settings, widget } = state;
let { process } = settings;
let { process, controller } = settings;
let danger = controller.danger;
let easeDown = process.camEaseDown;
let toolDiam = this.toolDiam;
let cutdir = process.camConventional;
let depthFirst = process.camDepthFirst;
@ -592,8 +598,10 @@
printPoint = flatLevels[0]
.sort((a,b) => { return a.area() - b.area() })[0]
.average();
printPoint = depthOutlinePath(printPoint, 0, flatLevels, toolDiam, polyEmit, false);
printPoint = depthOutlinePath(printPoint, 0, flatLevels, toolDiam, polyEmit, true);
// experimental start of ease down
let ease = danger && op.down && easeDown ? op.down : 0;
printPoint = depthOutlinePath(printPoint, 0, flatLevels, toolDiam, polyEmit, false, ease);
printPoint = depthOutlinePath(printPoint, 0, flatLevels, toolDiam, polyEmit, true, ease);
}
}

View file

@ -414,7 +414,7 @@
return last;
}
function depthRoughPath(start, depth, levels, tops, emitter, fit) {
function depthRoughPath(start, depth, levels, tops, emitter, fit, ease) {
let level = levels[depth];
if (!level) {
return start;
@ -424,13 +424,19 @@
fitted.filter(top => !top.level_emit).forEach(top => {
top.level_emit = true;
let inside = level.filter(poly => poly.isInside(top));
if (ease) {
start.z += ease;
}
start = poly2polyEmit(inside, start, emitter, { mark: "emark", perm: true });
start = depthRoughPath(start, depth + 1, levels, tops, emitter, top);
if (ease) {
start.z += ease;
}
start = depthRoughPath(start, depth + 1, levels, tops, emitter, top, ease);
});
return start;
}
function depthOutlinePath(start, depth, levels, radius, emitter, clr) {
function depthOutlinePath(start, depth, levels, radius, emitter, clr, ease) {
let bottm = depth < levels.length - 1 ? levels[levels.length - 1] : null;
let above = levels[depth-1];
let level = levels[depth];
@ -458,8 +464,14 @@
// omit polys that match bottom level polys unless level above is cleared
start = poly2polyEmit(level, start, (poly, index, count, fromPoint) => {
poly.level_emit = true;
if (ease) {
fromPoint.z += ease;
}
fromPoint = polyEmit(poly, index, count, fromPoint);
fromPoint = depthOutlinePath(fromPoint, depth + 1, levels, radius, emitter, clr);
if (ease) {
fromPoint.z += ease;
}
fromPoint = depthOutlinePath(fromPoint, depth + 1, levels, radius, emitter, clr, ease);
return fromPoint;
}, {weight: true});
return start;