Ignore:
Timestamp:
01/02/07 16:12:46 (17 years ago)
Author:
bittner
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/Preprocessing/src/RssTree.cpp

    r1906 r1931  
    26292629{ 
    26302630 
    2631   if (1) { 
    2632         float param[5]; 
    2633          
    2634         for (int i=0; i < numberOfRays; i++) { 
    2635           mHalton.GetNext(5, param); 
    2636           GenerateRay(param, rays); 
    2637         } 
    2638  
    2639         return rays.size(); 
    2640   } 
    2641    
    2642   vector<RssTreeLeaf *> leaves; 
    2643  
    2644   Debug<<"Collecting leaves..."<<endl<<flush; 
    2645   CollectLeaves(leaves); 
    2646   Debug<<"done."<<endl<<flush; 
    2647    
    2648    
    2649   if (numberOfLeaves != leaves.size()) { 
    2650         Debug<<"sorting leaves..."<<endl<<flush; 
    2651         sort(leaves.begin(), 
    2652                  leaves.end(), 
    2653                  GreaterContribution); 
    2654         Debug<<"done."<<endl<<flush; 
    2655   } 
    2656                           
    2657    
    2658   Debug<<"Evaluating leaf importance..."<<endl<<flush; 
    2659  
    2660   float sumContrib = 0.0; 
    2661   int i; 
    2662   int k = 0; 
    2663   for (i=0; i < leaves.size() && k < numberOfLeaves; i++) 
    2664         if (ValidLeaf(leaves[i])) { 
    2665           float c = leaves[i]->GetImportance(); 
    2666           sumContrib += c; 
    2667           //            cout<<"ray contrib "<<i<<" : "<<c<<endl; 
    2668           k++; 
    2669         } 
    2670  
    2671   Debug<<"done."<<endl<<flush; 
    2672    
    2673   float avgContrib = sumContrib/numberOfLeaves; 
    2674    
    2675   // always generate at leat n ray per leaf 
    2676   int fixedPerLeaf = 1; 
    2677   // int fixedPerLeaf = 0; 
    2678   int fixed = fixedPerLeaf*(int)leaves.size(); 
    2679  
    2680   // check if the number of fixed is not too big 
    2681  
    2682   if (fixed >= numberOfRays/2) { 
    2683         fixedPerLeaf = 0; 
    2684         fixed = 0; 
    2685   } 
    2686    
    2687   int iGenerated = numberOfRays - fixed; 
    2688   float ratioPerLeaf = iGenerated /(avgContrib*numberOfLeaves); 
    2689    
    2690   k = 0; 
    2691  
    2692   Debug<<"generating leaf rays..."<<endl<<flush; 
    2693  
    2694   for (i=0; i < leaves.size() && k < numberOfLeaves; i++) 
    2695         if (ValidLeaf(leaves[i])) { 
    2696           RssTreeLeaf *leaf = leaves[i]; 
    2697           float c = leaf->GetImportance(); 
    2698            
    2699           int num = fixedPerLeaf + (int)(c*ratioPerLeaf + 0.5f); 
    2700           GenerateLeafRaysSimple(leaf, num, rays); 
    2701  
    2702           k++; 
    2703         } 
    2704  
    2705   Debug<<"done."<<endl<<flush; 
    2706  
    2707   return (int)rays.size(); 
     2631  float param[5]; 
     2632   
     2633  for (int i=0; i < numberOfRays; i++) { 
     2634        mHalton.GetNext(5, param); 
     2635        GenerateRay(param, rays); 
     2636  } 
     2637   
     2638  return rays.size(); 
     2639   
    27082640} 
    27092641 
Note: See TracChangeset for help on using the changeset viewer.