1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-09 08:16:50 +02:00
This commit is contained in:
Justin Lin
2022-03-11 08:56:42 +08:00
parent 62f6c4caa5
commit 2b3fc8f80e
4 changed files with 17 additions and 17 deletions

View File

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

View File

@@ -5,15 +5,16 @@ 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],
invert ? row_bits[i] / nmal : (255 - row_bits[i]) / nmal
]
if(row_bits[i] != level)
[
[i - half_w + offset_x, y],
invert ? row_bits[i] / nmal : (255 - row_bits[i]) / nmal
]
];
function _vx_gray_impl(levels, center, invert, normalize) =

View File

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

View File

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