From b3076fb7b145d13536efcf0f2a5221b6b79a7ca6 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Fri, 4 Dec 2020 15:55:51 +0800 Subject: [PATCH] dedup --- src/voxel/_impl/_vx_bezier_impl.scad | 4 ++-- src/voxel/vx_bezier.scad | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/voxel/_impl/_vx_bezier_impl.scad b/src/voxel/_impl/_vx_bezier_impl.scad index 08eda6a8..347477cf 100644 --- a/src/voxel/_impl/_vx_bezier_impl.scad +++ b/src/voxel/_impl/_vx_bezier_impl.scad @@ -11,7 +11,7 @@ function _vx_bezier_pt3(p1, p2, p3, p4, pts) = _vx_bezier3(c, b2, a3, p4, _vx_bezier3(p1, a1, b1, c, concat(pts, [p]))); function _vx_bezier3(p1, p2, p3, p4, pts) = - (abs(p1[0] - p4[0]) < 1 && abs(p1[1] - p4[1]) < 1 && abs(p1[2] - p4[2]) < 1) ? + (abs(p1[0] - p4[0]) < 0.5 && abs(p1[1] - p4[1]) < 0.5 && abs(p1[2] - p4[2]) < 0.5) ? pts : _vx_bezier_pt3(p1, p2, p3, p4, pts); @@ -28,6 +28,6 @@ function _vx_bezier_pt2(p1, p2, p3, p4, pts) = _vx_bezier2(c, b2, a3, p4, _vx_bezier2(p1, a1, b1, c, concat(pts, [p]))); function _vx_bezier2(p1, p2, p3, p4, pts) = - (abs(p1[0] - p4[0]) < 1 && abs(p1[1] - p4[1]) < 1) ? + (abs(p1[0] - p4[0]) < 0.5 && abs(p1[1] - p4[1]) < 0.5) ? pts : _vx_bezier_pt2(p1, p2, p3, p4, pts); \ No newline at end of file diff --git a/src/voxel/vx_bezier.scad b/src/voxel/vx_bezier.scad index c66c7d3d..eb973ec1 100644 --- a/src/voxel/vx_bezier.scad +++ b/src/voxel/vx_bezier.scad @@ -1,11 +1,14 @@ use <__comm__/__to2d.scad>; use <__comm__/__to3d.scad>; use <_impl/_vx_bezier_impl.scad>; +use <../util/sort.scad>; +use <../util/dedup.scad>; function vx_bezier(p1, p2, p3, p4) = let( is2d = len(p1) == 2, pts = is2d ? _vx_bezier2(__to3d(p1), __to3d(p2), __to3d(p3), __to3d(p4), []) : - _vx_bezier3(p1, p2, p3, p4, []) + _vx_bezier3(p1, p2, p3, p4, []), + sorted = dedup(sort(pts, by = "vt"), sorted = true) ) - is2d ? [for(p = pts) __to2d(p)] : pts; \ No newline at end of file + is2d ? [for(p = sorted) __to2d(p)] : sorted; \ No newline at end of file