Run Over: DETAIL Creates a MengerSponge fractal
int cubeSize = 3;
int iterations = 4;
vector iterPosList [] = array(set(0,0,0));
vector currPosList [];
int counter = 0;
while(counter <= iterations)
{
foreach(vector pos; currPosList)
{
for(int i=0; i<cubeSize; i++)
{
for(int j=0; j<cubeSize; j++)
{
for(int k=0; k<cubeSize; k++)
{
if(!(i%3==j%3 && i%3==1 || i%3==k%3 && i%3==1 || k%3==j%3 && k%3==1))
{
float scale = pow(3.0, counter);
vector tempPos = (pos+(set(i,j,k))/scale);
if((counter+1)==iterations)
{
int pt = addpoint(0, tempPos);
addpointattrib(0, "pscale", -1.0);
setpointattrib(0, "pscale", pt, 1.0/scale);
}
push(iterPosList, tempPos);
}
}
}
}
}
resize(currPosList, len(iterPosList));
currPosList = iterPosList;
iterPosList = array();
counter++;
}