Elyg
11/3/2017 - 3:39 PM

Mengersponge points

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++;
}