mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-09 16:26:47 +02:00
refactor
This commit is contained in:
@@ -4,9 +4,10 @@ function _vx_from_row(r_count, row_bits, width, height, center, invert) =
|
||||
half_h = height / 2,
|
||||
offset_x = center ? 0 : half_w,
|
||||
offset_y = center ? -half_h : 0,
|
||||
bit = invert ? 0 : 1
|
||||
bit = invert ? 0 : 1,
|
||||
y = r_count + offset_y
|
||||
)
|
||||
[for(i = 0; i < width; i = i + 1) if(row_bits[i] == bit) [i - half_w + offset_x, r_count + offset_y]];
|
||||
[for(i = 0; i < width; i = i + 1) if(row_bits[i] == bit) [i - half_w + offset_x, y]];
|
||||
|
||||
function _vx_from_impl(binaries, center, invert) =
|
||||
let(
|
||||
|
@@ -5,13 +5,14 @@ function _vx_gray_row(r_count, row_bits, width, height, center, invert, normaliz
|
||||
offset_x = center ? 0 : half_w,
|
||||
offset_y = center ? -half_h : 0,
|
||||
level = invert ? 0 : 255,
|
||||
nmal = normalize ? 255 : 1
|
||||
nmal = normalize ? 255 : 1,
|
||||
y = r_count + offset_y
|
||||
)
|
||||
[
|
||||
for(i = 0; i < width; i = i + 1)
|
||||
if(row_bits[i] != level)
|
||||
[
|
||||
[i - half_w + offset_x, r_count + offset_y],
|
||||
[i - half_w + offset_x, y],
|
||||
invert ? row_bits[i] / nmal : (255 - row_bits[i]) / nmal
|
||||
]
|
||||
];
|
||||
|
@@ -11,18 +11,16 @@ function vx_polygon(points, filled = false) =
|
||||
ys = [for(p = sortedXY) p.y],
|
||||
rows = [
|
||||
for(y = [min(ys):max(ys)])
|
||||
let(
|
||||
idxes = search(y, sortedXY, num_returns_per_match = 0, index_col_num = 1)
|
||||
)
|
||||
let(idxes = search(y, sortedXY, num_returns_per_match = 0, index_col_num = 1))
|
||||
[for(i = idxes) sortedXY[i]]
|
||||
],
|
||||
all = concat(
|
||||
sortedXY,
|
||||
[
|
||||
for(row = rows)
|
||||
let(to = len(row) - 1, row0 = row[0], y = row0[1])
|
||||
if(to > 0 && (row0[0] + 1 != row[to][0]))
|
||||
for(i = [row0[0] + 1:row[to][0] - 1])
|
||||
let(to = len(row) - 1, row0 = row[0], y = row0[1], row_to = row[to])
|
||||
if(to > 0 && (row0[0] + 1 != row_to[0]))
|
||||
for(i = [row0[0] + 1:row_to[0] - 1])
|
||||
let(p = [i, y])
|
||||
if(in_shape(points, p)) p
|
||||
]
|
||||
|
@@ -13,15 +13,15 @@ function vx_sphere(radius, filled = false, thickness = 1) =
|
||||
filled ? [
|
||||
for(z = range, y = range, x = range)
|
||||
let(v = [x, y, z])
|
||||
if(norm(v) < radius) v
|
||||
if(v * v < radius ^ 2) v
|
||||
] :
|
||||
let(ishell = radius * radius - 2 * thickness * radius)
|
||||
[
|
||||
for(z = range, y = range, x = range)
|
||||
let(
|
||||
v = [x, y, z],
|
||||
leng = norm(v)
|
||||
vv = v * v
|
||||
)
|
||||
if(leng < radius && (leng * leng) > ishell) v
|
||||
if(vv < radius ^ 2 && vv > ishell) v
|
||||
];
|
||||
|
Reference in New Issue
Block a user