diff options
| author | Don Bright <hugh.m.bright@gmail.com> | 2013-05-27 05:08:31 (GMT) | 
|---|---|---|
| committer | Don Bright <hugh.m.bright@gmail.com> | 2013-05-27 05:08:31 (GMT) | 
| commit | 37dc9342a14206f5862447eb9d3d5049ec67f638 (patch) | |
| tree | 17e5a57dfa154821918094cab47476189771ce00 /examples | |
| parent | 6742ad55f4cf335fc767ab65784aab81e06b61d0 (diff) | |
| parent | 0967a26bff45951d7b86fe628e8b1156e6e40ede (diff) | |
Merge branch 'master' of github.com:openscad/openscad into issue125
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); +} | 
