diff options
| author | Marius Kintel <marius@kintel.net> | 2013-05-22 03:04:22 (GMT) | 
|---|---|---|
| committer | Marius Kintel <marius@kintel.net> | 2013-05-22 03:04:22 (GMT) | 
| commit | ef9d8a853be1a6d6ca48239fcc79106ba374ee21 (patch) | |
| tree | 041fe3424e663a40986208e6829df5e955838e33 /examples | |
| parent | 470588b296aea880c84071ee53a23f055f9c5bf0 (diff) | |
| parent | 71ab237aada8db602045063f0f1c6082ef06972a (diff) | |
Merge branch 'master' into issue304
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/example024.scad | 32 | 
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); +}  | 
