예제 #1
0
//--------------------------------------------------------------
void ofApp::setup(){
    
    
    //sound image is the large image, image rect acts as it's bounding box which helps it maintain aspect ratio and middle of screen orientation
    soundImage.load("Volume.jpg");
    key.load("key.jpg");
    imageRect.setSize(soundImage.getWidth(), soundImage.getHeight());
    
    //loading font for information display
    stampFont.load("stamped.ttf",7);
    
    updateImageRect();
    generateStates();
}
예제 #2
0
  /* Continuous model synthesis main function
  */
  bool continuousModelSynthesis2D(vector<Edge*> &edges, vector<Vertex*> &vertices,
    CMSModel &input,  Grid &grid)
  {
    for( std::vector<Vertex*>::iterator vertex_itr = vertices.begin();
      vertex_itr != vertices.end(); vertex_itr++)
      sortEdges(*vertex_itr);

    int *relativeCounters;
    std::vector<VertexStateEdges> sourceValidStates;
    std::vector<VertexState> validStates;
    relativeCounters = new int[vertices.size()];
    for(unsigned int i = 0; i < vertices.size(); i++)
      relativeCounters[i] = 0;
    generateValid(sourceValidStates, input, grid);
    generateStates( vertices, sourceValidStates, validStates, relativeCounters);
    //srand(time(NULL)); done already;
    while(validStates.size() > 0)
    {
      sort(validStates.begin(), validStates.end());
      std::vector<VertexState>::iterator itr = validStates.begin();
      if(*((*itr).relativesCounter) > 1)
      {
        int size = validStates.size();
        //int randomstate = rand()%(validStates.size());
        //Sanity check, validStates should be smaller than relativesCounter
        if( *((*itr).relativesCounter) > (int)validStates.size())
          exit(9001);
        int randomstate = rand() % *((*itr).relativesCounter);
        itr += randomstate;
      }
      else
      {
        int i = 0;
        i++;
      }
      //(*((*itr).relativesCounter))--;
      VertexState state = (*itr);
      validStates.erase(itr);
      for(int i = 0; i < 4; i++)
      {
        if(state.dependentedges[i] != NULL)
        {
          constrainEdge(state.dependentedges[i],
            state.edgeinfo.dependentstates[i].leftFace,
            state.edgeinfo.dependentstates[i].rightFace, validStates);
        }
      }
    }
    bool result = true;
    for(unsigned int i = 0; i < vertices.size(); i++)
    {
      std::cout << relativeCounters[i];
      if( relativeCounters[i] == 0)
      {
        result = false;
      }
    }
    std::cout << std::endl;
    delete relativeCounters;
    return result;
  }