Example #1
0
void 
MengerSponge::setDepth( int d ) {
    if( d < 1 )
        return;
    depth =d;
    makeSponge();
}
Example #2
0
 InstancedSponge::InstancedSponge(unsigned recursion, QList<string>& attributes) {
     bufferCount = 1;
     makeSponge(recursion, {0, 0, 0}, 1.0f);
     setMesh(MeshLoader::load(attributes, "cube.obj"));
     calculateBufferSize();
     setCastShadows(false);
 }
Example #3
0
MengerSponge::MengerSponge(const QList<string> & attributes, unsigned recursion) {
  mesh = new Mesh(attributes);
  makeSponge(recursion, {0, 0, 0}, 1.0f);
  mesh->init();
  mesh->setDrawType(GL_TRIANGLES);
  glError;
}
Example #4
0
void
MengerSponge::setMode( int m ) {
    mode =m;
    makeSponge();
}
Example #5
0
    void InstancedSponge::makeSponge(
            unsigned recursion, const vector<float> & position, float size) {
      if (recursion == 0) {
        addCube(position, size);
      } else {
        recursion-=1;
        size/=3.0f;
        float trans = size*2;

        // TOP
        makeSponge(recursion,
                {position[0], position[1]+trans, position[2]+trans}, size);

        makeSponge(recursion,
                {position[0]-trans, position[1]+trans, position[2]}, size);
        makeSponge(recursion,
                {position[0], position[1]+trans, position[2]-trans}, size);
        makeSponge(recursion,
                {position[0]+trans, position[1]+trans, position[2]}, size);


        makeSponge(recursion,
                {position[0]+trans, position[1]+trans, position[2]+trans},
                size);
        makeSponge(recursion,
                {position[0]+trans, position[1]+trans, position[2]-trans},
                size);

        makeSponge(recursion,
                {position[0]-trans, position[1]+trans, position[2]+trans},
                size);
        makeSponge(recursion,
                {position[0]-trans, position[1]+trans, position[2]-trans},
                size);

        // MIDDLE
        makeSponge(recursion,
                {position[0]+trans, position[1], position[2]+trans}, size);
        makeSponge(recursion,
                {position[0]+trans, position[1], position[2]-trans}, size);

        makeSponge(recursion,
                {position[0]-trans, position[1], position[2]+trans}, size);
        makeSponge(recursion,
                {position[0]-trans, position[1], position[2]-trans}, size);

        // BOTTOM
        makeSponge(recursion,
                {position[0], position[1]-trans, position[2]+trans}, size);
        makeSponge(recursion,
                {position[0], position[1]-trans, position[2]-trans}, size);

        makeSponge(recursion,
                {position[0]+trans, position[1]-trans, position[2]}, size);
        makeSponge(recursion,
                {position[0]-trans, position[1]-trans, position[2]}, size);

        makeSponge(recursion,
                {position[0]+trans, position[1]-trans, position[2]+trans},
                size);
        makeSponge(recursion,
                {position[0]+trans, position[1]-trans, position[2]-trans},
                size);

        makeSponge(recursion,
                {position[0]-trans, position[1]-trans, position[2]+trans},
                size);
        makeSponge(recursion,
                {position[0]-trans, position[1]-trans, position[2]-trans},
                size);
      }
    }