diff --git a/src/voxel/_impl/_vx_from_impl.scad b/src/voxel/_impl/_vx_from_impl.scad index e7adc30b..fcf2966e 100644 --- a/src/voxel/_impl/_vx_from_impl.scad +++ b/src/voxel/_impl/_vx_from_impl.scad @@ -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( diff --git a/src/voxel/_impl/_vx_gray_impl.scad b/src/voxel/_impl/_vx_gray_impl.scad index fa54e3da..fa8db8de 100644 --- a/src/voxel/_impl/_vx_gray_impl.scad +++ b/src/voxel/_impl/_vx_gray_impl.scad @@ -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) = diff --git a/src/voxel/vx_polygon.scad b/src/voxel/vx_polygon.scad index f74fa0ac..1d4ec30b 100644 --- a/src/voxel/vx_polygon.scad +++ b/src/voxel/vx_polygon.scad @@ -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 ] diff --git a/src/voxel/vx_sphere.scad b/src/voxel/vx_sphere.scad index 45c7dd66..b62b379f 100644 --- a/src/voxel/vx_sphere.scad +++ b/src/voxel/vx_sphere.scad @@ -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 ]; \ No newline at end of file