From 252eb53be46e5ee72dfca253d6f278801e79af72 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Sat, 17 Apr 2021 22:13:28 +0800 Subject: [PATCH] performance improved --- .../_impl/_tri_delaunay_impl.scad | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/src/experimental/_impl/_tri_delaunay_impl.scad b/src/experimental/_impl/_tri_delaunay_impl.scad index 3f37c009..83598727 100644 --- a/src/experimental/_impl/_tri_delaunay_impl.scad +++ b/src/experimental/_impl/_tri_delaunay_impl.scad @@ -76,9 +76,7 @@ function adjustNeighbors(d, newTriangles) = ) _adjustNeighborsOtri(aDtrid, newTriangles, leng); -function hashmap_puts(m, kv_lt) = - let(leng = len(kv_lt)) - _hashmap_puts(m, kv_lt, leng); +function hashmap_puts(m, kv_lt) = _hashmap_puts(m, kv_lt, len(kv_lt)); function _hashmap_puts(m, kv_lt, leng, i = 0) = i == leng ? m : @@ -186,22 +184,18 @@ function _delaunayBoundaries(d, badTriangles, boundaries, t, vi) = v1 == v2 ? nboundaries : _delaunayBoundaries(d, badTriangles, nboundaries, t, nvi); function delBadTriangles(d, badTriangles) = - let( - triangles = delaunay_triangles(d), - circles = delaunay_circles(d), - nTriangles = hashmap([ - for(t = hashmap_keys(triangles)) - if(!has(badTriangles, t)) - [t, hashmap_get(triangles, t)] - ]), - nCircles = hashmap([ - for(t = hashmap_keys(circles)) - if(!has(badTriangles, t)) - [t, hashmap_get(circles, t)] - ]) - ) - [delaunay_coords(d), nTriangles, nCircles]; + [ + delaunay_coords(d), + hashmap_dels(delaunay_triangles(d), badTriangles), + hashmap_dels(delaunay_circles(d), badTriangles) + ]; +function hashmap_dels(m, keys) = _hashmap_dels(m, keys, len(keys)); + +function _hashmap_dels(m, keys, leng, i = 0) = + i == leng ? m : + _hashmap_dels(hashmap_del(m, keys[i]), keys, leng, i + 1); + function _tri_delaunay(d, points, leng, i = 0) = i == leng ? d : _tri_delaunay(delaunay_addpoint(d, points[i]), points, leng, i + 1); \ No newline at end of file