1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-17 20:11:50 +02:00
This commit is contained in:
Justin Lin
2020-02-19 13:46:07 +08:00
parent 1a63f93a7b
commit 0e37195ede
2 changed files with 28 additions and 16 deletions

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

View File

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