mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-07 07:16:36 +02:00
customized hash
This commit is contained in:
@@ -11,19 +11,21 @@ module sf_solidify_tri(points1, points2, triangles) {
|
|||||||
|
|
||||||
tris = [for(tri = triangles) [tri[2], tri[1], tri[0]]];
|
tris = [for(tri = triangles) [tri[2], tri[1], tri[0]]];
|
||||||
|
|
||||||
|
hash = function(e) e[0] + e[1] * 31;
|
||||||
|
|
||||||
function de_pairs(tri_edges) =
|
function de_pairs(tri_edges) =
|
||||||
let(
|
let(
|
||||||
leng = len(tri_edges),
|
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);
|
_de_pairs(tri_edges, leng, edges);
|
||||||
|
|
||||||
function _de_pairs(tri_edges, leng, edges, i = 3) =
|
function _de_pairs(tri_edges, leng, edges, i = 3) =
|
||||||
i == leng ? hashset_elems(edges) :
|
i == leng ? hashset_elems(edges) :
|
||||||
let(edge = tri_edges[i], pair = [edge[1], edge[0]])
|
let(edge = tri_edges[i], pair = [edge[1], edge[0]])
|
||||||
hashset_has(edges, pair) ?
|
hashset_has(edges, pair, hash = hash) ?
|
||||||
_de_pairs(tri_edges, leng, hashset_del(edges, pair), i + 1) :
|
_de_pairs(tri_edges, leng, hashset_del(edges, pair, hash = hash), i + 1) :
|
||||||
_de_pairs(tri_edges, leng, hashset_add(edges, edge), i + 1);
|
_de_pairs(tri_edges, leng, hashset_add(edges, edge, hash = hash), i + 1);
|
||||||
|
|
||||||
tri_edges = [
|
tri_edges = [
|
||||||
for(tri = tris)
|
for(tri = tris)
|
||||||
|
Reference in New Issue
Block a user