1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-19 04:51:26 +02:00

add sf_square

This commit is contained in:
Justin Lin
2020-02-18 17:18:11 +08:00
parent a9fd1444d8
commit c89c440bda

View File

@@ -0,0 +1,52 @@
use <experimental/sf_solidify.scad>;
use <experimental/tf_sphere.scad>;
/*
levels : A list of numbers (0 ~ 255).
thickness: square thickness
invert: inverts how the gray levels are translated into height values.
*/
module sf_square(levels, thickness, invert = false) {
columns = len(levels);
rows = len(levels[0]);
size = [columns - 1, rows - 1];
surface1 = [
for(r = [0:rows - 1])
[
for(c = [0:columns - 1])
let(lv = invert ? 255 - levels[c][r] : levels[c][r])
[c, r, lv / 255 * thickness]
]
];
surface2 = [
for(r = [0:rows - 1])
[
for(c = [0:columns - 1])
[c, r, 0]
]
];
sf_solidify(
[
for(r = [0:rows - 1])
[
for(c = [0:columns - 1])
let(
lv = invert ? 255 - levels[c][r] : levels[c][r],
offset_z = invert ? thickness : 0
)
[c, r, lv / 255 * thickness + offset_z]
]
],
[
for(r = [0:rows - 1])
[
for(c = [0:columns - 1])
[c, r, 0]
]
]
);
}