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,
|
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(
|
||||||
|
@@ -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
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
@@ -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
|
||||||
]
|
]
|
||||||
|
@@ -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
|
||||||
];
|
];
|
||||||
|
|
Reference in New Issue
Block a user