//-------------------------------------------------------------- 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(); }
/* 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; }