|
![](/i/fill.gif) |
I'm trying to do a seirpenski (sp?) gasket in cube form.
However, when I set the initial call to the function at more than 1 (+1)
iterations, it just gives me a solid cube. I don't get it. can anyone see
what I did wrong? It worked beautifully fine before I changed the
iteration call from 20 static calls to the same function to a 3x3x3 loop
(testing for the 7 values which don't need to be used) to knock out all the
20 blocks around each center.
here is my code:
#version 3.5;
#include "colors.inc"
global_settings {
assumed_gamma 1.0
}
camera {
location <6.0, 9.0, 3.0>
look_at <0.0, 0.0, 0.0>
}
sky_sphere {
pigment {
gradient z
color_map {
[0 red .1]
[.5 blue .1]
[1 red .1]
}
scale <.01,.01,.01>
}
}
light_source {
<6.0, 9.0, 3.0>
color rgb 1
}
#macro killpart()
box {<-3.01,-1,-1><3.01,1,1>}
box {<-1,-3.01,-1><1,3.01,1>}
box {<-1,-1,-3.01><1,1,3.01>}
#end
#macro killall(iteration)
killpart()
#if (iteration>0)
union{
#declare loopx=-1;
#while (loopx<=1)
#declare loopy=-1;
#while (loopy<=1)
#declare loopz=-1;
#while (loopz<=1)
#if ((loopx=0 & loopy=0) | (loopy=0 & loopz=0) | (loopz=0 & loopx=0))
#else
union {
killall(iteration-1)
scale 1/3
translate<2*loopx,2*loopy,2*loopz>
}
#end
#declare loopz=loopz+1;
#end
#declare loopy=loopy+1;
#end
#declare loopx=loopx+1;
#end
}
#end
#end
difference {
box {-3,3}
union{
killall(1) //<---- here is where, if I set the initial call to more than
just 1, it just gives me a solid cube.
}
pigment {green 1}
}
Post a reply to this message
|
![](/i/fill.gif) |