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