1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-23 14:54:12 +02:00
This commit is contained in:
Justin Lin
2021-07-10 09:36:10 +08:00
parent d6505ca082
commit 90831fb216

View File

@@ -10,7 +10,6 @@
use <../util/sort.scad>; use <../util/sort.scad>;
use <../util/find_index.scad>; use <../util/find_index.scad>;
use <../util/slice.scad>;
use <../util/sum.scad>; use <../util/sum.scad>;
use <../surface/sf_solidifyT.scad>; use <../surface/sf_solidifyT.scad>;
use <../triangle/tri_delaunay.scad>; use <../triangle/tri_delaunay.scad>;
@@ -28,29 +27,18 @@ module sf_thickenT(points, thickness, triangles = undef, direction = "BOTH") {
leng = len(triangles), leng = len(triangles),
cnt_tris = [for(i = [0:leng_pts - 1]) []] cnt_tris = [for(i = [0:leng_pts - 1]) []]
) )
_connected_tris(triangles, leng, cnt_tris); _connected_tris(triangles, leng, leng_pts, cnt_tris);
function _connected_tris(triangles, leng, cnt_tris, i = 0) = function _connected_tris(triangles, leng, leng_pts, cnt_tris, i = 0) =
i == leng ? cnt_tris : i == leng ? cnt_tris :
let( let(
tri = sort(triangles[i], by = ascending), tri = sort(triangles[i], by = ascending),
b0 = cnt_tris[tri[0]], n_cnt_tris = [
b1 = cnt_tris[tri[1]], for(k = [0:leng_pts - 1])
b2 = cnt_tris[tri[2]], find_index(tri, function(e) e == k) != -1 ? concat(cnt_tris[k], [triangles[i]]) : cnt_tris[k]
nb0 = concat(b0, [triangles[i]]), ]
nb1 = concat(b1, [triangles[i]]),
nb2 = concat(b2, [triangles[i]]),
n_cnt_tris = concat(
slice(cnt_tris, 0, tri[0]),
[nb0],
slice(cnt_tris, tri[0] + 1, tri[1]),
[nb1],
slice(cnt_tris, tri[1] + 1, tri[2]),
[nb2],
slice(cnt_tris, tri[2] + 1)
)
) )
_connected_tris(triangles, leng, n_cnt_tris, i + 1); _connected_tris(triangles, leng, leng_pts, n_cnt_tris, i + 1);
function tri_normal(tri) = function tri_normal(tri) =
let(v = cross(tri[2] - tri[0], tri[1] - tri[0])) v / norm(v); let(v = cross(tri[2] - tri[0], tri[1] - tri[0])) v / norm(v);