1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-06 06:47:46 +02:00

customized hash

This commit is contained in:
Justin Lin
2021-06-27 08:41:37 +08:00
parent 9595e2cb34
commit caf29ff9aa

View File

@@ -11,19 +11,21 @@ module sf_solidify_tri(points1, points2, triangles) {
tris = [for(tri = triangles) [tri[2], tri[1], tri[0]]];
hash = function(e) e[0] + e[1] * 31;
function de_pairs(tri_edges) =
let(
leng = len(tri_edges),
edges = hashset([tri_edges[0], tri_edges[1], tri_edges[2]], number_of_buckets = round(sqrt(leng)))
edges = hashset([tri_edges[0], tri_edges[1], tri_edges[2]], hash = hash, number_of_buckets = round(sqrt(leng)))
)
_de_pairs(tri_edges, leng, edges);
function _de_pairs(tri_edges, leng, edges, i = 3) =
i == leng ? hashset_elems(edges) :
let(edge = tri_edges[i], pair = [edge[1], edge[0]])
hashset_has(edges, pair) ?
_de_pairs(tri_edges, leng, hashset_del(edges, pair), i + 1) :
_de_pairs(tri_edges, leng, hashset_add(edges, edge), i + 1);
hashset_has(edges, pair, hash = hash) ?
_de_pairs(tri_edges, leng, hashset_del(edges, pair, hash = hash), i + 1) :
_de_pairs(tri_edges, leng, hashset_add(edges, edge, hash = hash), i + 1);
tri_edges = [
for(tri = tris)