From 0b0233bbf653dc9438f52f231c11bc5b26542671 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Sun, 12 Mar 2023 14:01:26 -0400 Subject: [PATCH] experimental poly segment midpoint function --- src/geo/polygon.js | 25 +++++++++++++++++++++++++ src/kiri-mode/cam/ops.js | 6 +++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/geo/polygon.js b/src/geo/polygon.js index 2542b62d..11536a02 100644 --- a/src/geo/polygon.js +++ b/src/geo/polygon.js @@ -1906,6 +1906,31 @@ class Polygon { return this; } + midpoints(dist = 0.01) { + const newp = []; + const points = this.points; + const length = points.length; + const l0 = this.open ? length - 1 : length; + let mod = 0; + for (let i=0, p=points; i p.clone())).setOpenValue(this.open); + } + return this; + } + } // use Slope.angleDiff() then re-test path mitering / rendering diff --git a/src/kiri-mode/cam/ops.js b/src/kiri-mode/cam/ops.js index 338e143b..d05c07cd 100644 --- a/src/kiri-mode/cam/ops.js +++ b/src/kiri-mode/cam/ops.js @@ -1342,16 +1342,14 @@ class OpPocket extends CamOp { } steps = steps * refine; iter = 0; - // walk points noting z deltas and smoothing sawtooth patterns + // walk points noting z deltas and smoothing z sawtooth patterns for (let j=0; j p.midpoints(topo.tolerance * 8)); return hirez; }