1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-09 16:26:47 +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, half_h = height / 2,
offset_x = center ? 0 : half_w, offset_x = center ? 0 : half_w,
offset_y = center ? -half_h : 0, 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) = function _vx_from_impl(binaries, center, invert) =
let( let(

View File

@@ -5,13 +5,14 @@ function _vx_gray_row(r_count, row_bits, width, height, center, invert, normaliz
offset_x = center ? 0 : half_w, offset_x = center ? 0 : half_w,
offset_y = center ? -half_h : 0, offset_y = center ? -half_h : 0,
level = invert ? 0 : 255, 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) for(i = 0; i < width; i = i + 1)
if(row_bits[i] != level) 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 invert ? row_bits[i] / nmal : (255 - row_bits[i]) / nmal
] ]
]; ];

View File

@@ -11,18 +11,16 @@ function vx_polygon(points, filled = false) =
ys = [for(p = sortedXY) p.y], ys = [for(p = sortedXY) p.y],
rows = [ rows = [
for(y = [min(ys):max(ys)]) for(y = [min(ys):max(ys)])
let( let(idxes = search(y, sortedXY, num_returns_per_match = 0, index_col_num = 1))
idxes = search(y, sortedXY, num_returns_per_match = 0, index_col_num = 1)
)
[for(i = idxes) sortedXY[i]] [for(i = idxes) sortedXY[i]]
], ],
all = concat( all = concat(
sortedXY, sortedXY,
[ [
for(row = rows) for(row = rows)
let(to = len(row) - 1, row0 = row[0], y = row0[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])) if(to > 0 && (row0[0] + 1 != row_to[0]))
for(i = [row0[0] + 1:row[to][0] - 1]) for(i = [row0[0] + 1:row_to[0] - 1])
let(p = [i, y]) let(p = [i, y])
if(in_shape(points, p)) p if(in_shape(points, p)) p
] ]

View File

@@ -13,15 +13,15 @@ function vx_sphere(radius, filled = false, thickness = 1) =
filled ? [ filled ? [
for(z = range, y = range, x = range) for(z = range, y = range, x = range)
let(v = [x, y, z]) let(v = [x, y, z])
if(norm(v) < radius) v if(v * v < radius ^ 2) v
] : ] :
let(ishell = radius * radius - 2 * thickness * radius) let(ishell = radius * radius - 2 * thickness * radius)
[ [
for(z = range, y = range, x = range) for(z = range, y = range, x = range)
let( let(
v = [x, y, z], v = [x, y, z],
leng = norm(v) vv = v * v
) )
if(leng < radius && (leng * leng) > ishell) v if(vv < radius ^ 2 && vv > ishell) v
]; ];