1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-19 04:51:26 +02:00
This commit is contained in:
Justin Lin
2022-03-25 11:32:55 +08:00
parent d2f961494b
commit 6fac123aee
4 changed files with 12 additions and 16 deletions

View File

@@ -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);

View File

@@ -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)

View File

@@ -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;

View File

@@ -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)