summaryrefslogtreecommitdiff
path: root/examples/example024.scad
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2013-05-21 23:21:00 (GMT)
committerMarius Kintel <marius@kintel.net>2013-05-21 23:21:00 (GMT)
commitfab07bafdaacf931314673e396111a9670dccc0e (patch)
tree4ee817cbeafd81e875507b941b54fe358a47dce1 /examples/example024.scad
parentf8622005f89c52061f498ab6ec28adfbd332c344 (diff)
Added recursion example. Fixes #346
Diffstat (limited to 'examples/example024.scad')
-rw-r--r--examples/example024.scad32
1 files changed, 32 insertions, 0 deletions
diff --git a/examples/example024.scad b/examples/example024.scad
new file mode 100644
index 0000000..1502ec7
--- /dev/null
+++ b/examples/example024.scad
@@ -0,0 +1,32 @@
+// Menger Sponge
+// By Nathan Hellweg, Emmett Lalish and Marius Kintel May 13, 2013
+// CC-BY-SA license
+
+// Size of edge of sponge
+D=100;
+// Fractal depth (number of iterations)
+n=3;
+
+module menger() {
+ difference() {
+ cube(D, center=true);
+ for (v=[[0,0,0], [0,0,90], [0,90,0]])
+ rotate(v) menger_negative(side=D, maxside=D, level=n);
+ }
+}
+
+module menger_negative(side=1, maxside=1, level=1) {
+ l=side/3;
+ cube([maxside*1.1, l, l], center=true);
+ if (level > 1) {
+ for (i=[-1:1], j=[-1:1])
+ if (i || j)
+ translate([0, i*l, j*l])
+ menger_negative(side=l, maxside=maxside, level=level-1);
+ }
+}
+
+difference() {
+ rotate([45, atan(1/sqrt(2)), 0]) menger();
+ translate([0,0,-D]) cube(2*D, center=true);
+}
contact: Jan Huwald // Impressum