mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-17 20:11:50 +02:00
refactor
This commit is contained in:
21
src/experimental/_impl/_sf_square_surfaces.scad
Normal file
21
src/experimental/_impl/_sf_square_surfaces.scad
Normal file
@@ -0,0 +1,21 @@
|
||||
function _sf_square_surfaces(levels, thickness, invert) =
|
||||
let(
|
||||
rows = len(levels),
|
||||
columns = len(levels[0]),
|
||||
surface1 = [
|
||||
for(r = [0:rows - 1])
|
||||
[
|
||||
for(c = [0:columns - 1])
|
||||
let(lv = invert ? 255 - levels[rows - r - 1][c] : levels[rows - r - 1][c])
|
||||
[c, r, lv / 255 * thickness]
|
||||
]
|
||||
],
|
||||
surface2 = [
|
||||
for(r = [0:rows - 1])
|
||||
[
|
||||
for(c = [0:columns - 1])
|
||||
[c, r, 0]
|
||||
]
|
||||
]
|
||||
)
|
||||
[surface1, surface2];
|
@@ -1,4 +1,4 @@
|
||||
use <experimental/_impl/sf_solidify.scad>;
|
||||
use <experimental/_impl/_sf_square_surfaces.scad>;
|
||||
use <experimental/sf_solidify.scad>;
|
||||
|
||||
/*
|
||||
@@ -7,26 +7,17 @@ use <experimental/sf_solidify.scad>;
|
||||
invert: inverts how the gray levels are translated into height values.
|
||||
*/
|
||||
module sf_square(levels, thickness, invert = false) {
|
||||
rows = len(levels);
|
||||
columns = len(levels[0]);
|
||||
surface = _sf_square_surfaces(levels, thickness, invert);
|
||||
offset_z = invert ? thickness : 0;
|
||||
size = [columns - 1, rows - 1];
|
||||
|
||||
|
||||
sf_solidify(
|
||||
[
|
||||
for(r = [0:rows - 1])
|
||||
for(row = surface[0])
|
||||
[
|
||||
for(c = [0:columns - 1])
|
||||
let(lv = invert ? 255 - levels[rows - r - 1][c] : levels[rows - r - 1][c])
|
||||
[c, r, lv / 255 * thickness + offset_z]
|
||||
for(p = row)
|
||||
p + [0, 0, offset_z]
|
||||
]
|
||||
],
|
||||
[
|
||||
for(r = [0:rows - 1])
|
||||
[
|
||||
for(c = [0:columns - 1])
|
||||
[c, r, 0]
|
||||
]
|
||||
]
|
||||
surface[1]
|
||||
);
|
||||
}
|
Reference in New Issue
Block a user