Ignore:
Timestamp:
12/20/05 20:33:42 (19 years ago)
Author:
mattausch
Message:

worked on new features,
removed Random Bug (took only 32000 values),
removed bug when choosing new candidates (totally wrong)
introduced new candidate plane method
implemented priority queue for vsp bsp

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/GtpVisibilityPreprocessor/src/ViewCellBsp.cpp

    r472 r473  
    355355 
    356356        app << "#N_PMINRAYSLEAVES  ( Percentage of leaves with minimal number of rays)\n"  
    357                 <<      minRaysNodes * 100 / (double)Leaves() << endl; 
     357                << minRaysNodes * 100 / (double)Leaves() << endl; 
     358 
     359        app << "#N_MAXCOSTNODES  ( Percentage of leaves with terminated because of max cost ratio )\n" 
     360                << maxCostNodes * 100 / (double)Leaves() << endl; 
    358361 
    359362        app << "#N_PMINAREALEAVES  ( Percentage of leaves with mininum area )\n" 
     
    412415                mRoot = new BspLeaf(); 
    413416 
    414         tStack.push(BspTraversalData(mRoot, polys, 0, mRootCell, new BoundedRayContainer(), 0,  
    415                                                                  mBox.SurfaceArea(), new BspNodeGeometry())); 
     417        tStack.push(BspTraversalData(mRoot,  
     418                                                                 polys,  
     419                                                                 0,  
     420                                                                 mRootCell,  
     421                                                                 new BoundedRayContainer(),  
     422                                                                 0,  
     423                                                                 mBox.SurfaceArea(),  
     424                                                                 new BspNodeGeometry())); 
    416425 
    417426        while (!tStack.empty()) 
     
    11421151        if (!data.mPolygons->empty()) 
    11431152                { 
    1144                         Polygon3 *nextPoly = (*data.mPolygons)[Random((int)data.mPolygons->size())]; 
     1153                        Polygon3 *nextPoly = (*data.mPolygons)[(int)RandomValue(0, (int)data.mPolygons->size() - 1)]; 
    11451154                        return nextPoly->GetSupportingPlane(); 
    11461155                } 
    11471156                else 
    11481157                { 
    1149                         const int candidateIdx = Random((int)data.mRays->size()); 
     1158                        const int candidateIdx = (int)RandomValue(0, (int)data.mRays->size() - 1); 
    11501159                        BoundedRay *bRay = (*data.mRays)[candidateIdx]; 
    11511160 
     
    11771186        int limit = Min((int)data.mPolygons->size(), mMaxPolyCandidates); 
    11781187         
    1179         int candidateIdx = limit; 
     1188        int candidateIdx = limit - 1; 
    11801189 
    11811190        for (int i = 0; i < limit; ++ i) 
     
    12071216        for (int i = 0; i < mMaxRayCandidates / 2; ++ i) 
    12081217        { 
    1209                 candidateIdx = Random((int)rays->size()); 
     1218                candidateIdx = (int)RandomValue(0, (int)rays->size() - 1); 
    12101219                BoundedRay *bRay = (*rays)[candidateIdx]; 
    12111220 
     
    12421251                for (int j = 0; j < 3; j ++) 
    12431252                { 
    1244                         idx[j] = Random((int)rays->size() * 2); 
     1253                        idx[j] = (int)RandomValue(0, (int)rays->size() * 2 - 1); 
    12451254                                 
    12461255                        if (idx[j] >= (int)rays->size()) 
     
    12791288int BspTree::GetNextCandidateIdx(int currentIdx, PolygonContainer &polys) 
    12801289{ 
    1281         const int candidateIdx = Random(currentIdx --); 
     1290        const int candidateIdx = (int)RandomValue(0, currentIdx --); 
    12821291 
    12831292        // swap candidates to avoid testing same plane 2 times 
     
    12851294         
    12861295        return currentIdx; 
    1287         //return Random((int)polys.size()); 
     1296        //return (int)RandomValue(0, (int)polys.size() - 1); 
    12881297} 
    12891298 
     
    13291338        for (int i = 0; i < limit; ++ i) 
    13301339        { 
    1331                 const int testIdx = useRand ? Random(limit) : i; 
     1340                const int testIdx = useRand ? (int)RandomValue(0, limit - 1) : i; 
    13321341 
    13331342                Polygon3 *poly = polys[testIdx]; 
     
    14941503        for (int i = 0; i < limit; ++ i) 
    14951504        { 
    1496                 const int testIdx = useRand ? Random(limit) : i; 
     1505                const int testIdx = useRand ? (int)RandomValue(0, limit - 1) : i; 
    14971506         
    14981507                BoundedRay *bRay = rays[testIdx]; 
     
    20762085{ 
    20772086        int splits = 0; 
    2078  
     2087         
    20792088        while (!rays.empty()) 
    20802089        { 
Note: See TracChangeset for help on using the changeset viewer.