mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-19 04:51:26 +02:00
refactor
This commit is contained in:
@@ -29,7 +29,6 @@ function _nz_cell_border(cells, p) =
|
||||
sorted0 = sorted[0],
|
||||
sorted1 = sorted[1],
|
||||
a = [for(i = [0:idx - 1]) sorted0[i]],
|
||||
b = [for(i = [0:idx - 1]) sorted1[i]],
|
||||
m = (a + b) / 2
|
||||
m = (a + [for(i = [0:idx - 1]) sorted1[i]]) / 2
|
||||
)
|
||||
(p - m) * (a - m);
|
@@ -11,7 +11,7 @@
|
||||
function ptf_circle(size, point) =
|
||||
let(
|
||||
p_offset = -size / 2,
|
||||
p = [point.x + p_offset.y, point.y + p_offset.x],
|
||||
p = point + p_offset,
|
||||
n = max(abs(p.x), abs(p.y)),
|
||||
r = n * 1.414,
|
||||
a = atan2(p.x, p.y)
|
||||
|
@@ -17,7 +17,7 @@ function ptf_sphere(size, point, radius, angle = [180, 360]) =
|
||||
xa = angle[1],
|
||||
za_step = za / size.y,
|
||||
rza = za_step * point.y,
|
||||
rzpt = [(radius + z) * cos(rza), (radius + z) * sin(rza), 0],
|
||||
rzpt = (radius + z) * [cos(rza), sin(rza), 0],
|
||||
rxpt = ptf_rotate(rzpt, [90 - xa / size.x * point.x, 90, 0])
|
||||
)
|
||||
rxpt;
|
@@ -8,12 +8,6 @@
|
||||
*
|
||||
**/
|
||||
|
||||
use <../util/set/hashset.scad>;
|
||||
use <../util/set/hashset_has.scad>;
|
||||
use <../util/set/hashset_add.scad>;
|
||||
use <../util/set/hashset_del.scad>;
|
||||
use <../util/set/hashset_elems.scad>;
|
||||
|
||||
module sf_solidifyT(points1, points2, triangles, convexity = 1) {
|
||||
// triangles : counter-clockwise
|
||||
leng = len(points1);
|
||||
@@ -26,16 +20,19 @@ module sf_solidifyT(points1, points2, triangles, convexity = 1) {
|
||||
function de_pairs(tri_edges) =
|
||||
let(
|
||||
leng = len(tri_edges),
|
||||
edges = hashset([tri_edges[0], tri_edges[1], tri_edges[2]], hash = hash, number_of_buckets = round(sqrt(leng)))
|
||||
edges = [tri_edges[0], tri_edges[1], tri_edges[2]]
|
||||
)
|
||||
_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, 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);
|
||||
i == leng ? edges :
|
||||
let(
|
||||
edge = tri_edges[i],
|
||||
pair = [edge[1], edge[0]],
|
||||
idx = search([pair], edges)[0],
|
||||
nx_edges = idx == [] ? [each edges, edge] : [for(i = [0:len(edges) - 1]) if(i != idx) edges[i]]
|
||||
)
|
||||
_de_pairs(tri_edges, leng, nx_edges, i + 1);
|
||||
|
||||
tri_edges = [
|
||||
for(tri = tris)
|
||||
|
Reference in New Issue
Block a user