int WangTiles::SimpleCompaction(const TileSet & tileSet, vector< vector<Tile> > & result) { const int numTiles = tileSet.NumTiles(); const int numHColors = tileSet.NumHColors(); const int numVColors = tileSet.NumVColors(); const int numTilesPerColor = tileSet.NumTilesPerColor(); // find the best aspect ratio const int maxFactor = floor(sqrt(numTiles)); const int height = numVColors*numVColors; const int width = numHColors*numHColors*numTilesPerColor; { result = vector< vector<Tile> > (height); for(int i = 0; i < result.size(); i++) { result[i] = vector<Tile>(width); } } { int i = 0; int j = 0; for(int e1 = 0; e1 < numVColors; e1++) for(int e3 = 0; e3 < numVColors; e3++) for(int e0 = 0; e0 < numHColors; e0++) for(int e2 = 0; e2 < numHColors; e2++) { const vector<Tile> & tiles = tileSet.Tiles(e0, e1, e2, e3); for(int k = 0; k < tiles.size(); k++) { result[i][j] = tiles[k]; j++; if(j >= result[i].size()) { i++; j = 0; } } } } // done return 1; }