Ignore:
Timestamp:
10/06/05 02:53:00 (19 years ago)
Author:
mattausch
Message:

removed sampling prep bug

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/GtpVisibilityPreprocessor/src/Pvs.h

    r310 r311  
    1212template<typename T> 
    1313struct LtSample { 
    14     bool operator()(const T *a, const T *b) const 
     14    bool operator()(const T a, const T b) const 
    1515    { 
    1616                return a < b; 
     
    2424  int mVisibleSamples; 
    2525  PvsData<T>() {} 
    26   PvsData<T>(const int samples):mVisibleSamples(samples) {} 
     26  PvsData<T>(const int samples): mVisibleSamples(samples) {} 
    2727}; 
    2828 
    2929template<typename T> 
    30 class mypvs  
     30class Pvs 
    3131{ 
    3232public: 
    33     mypvs(): mSamples(0), mEntries() {} 
     33    Pvs(): mSamples(0), mEntries() {} 
    3434        int mSamples; 
    3535 
    36         //int Compress() {return 0;} 
     36        int Compress() {return 0;} 
    3737        int GetSize() {return (int)mEntries.size();} 
    3838 
     
    4848 
    4949template <typename T> 
    50 PvsData<T> *mypvs<T>::Find(T sample) 
     50PvsData<T> *Pvs<T>::Find(T sample) 
    5151{ 
    52   /*std::map<T *, PvsData<T>, LtSample<T> >::iterator i = mEntries.find(sample); 
     52  std::map<T, PvsData<T>, LtSample<T> >::iterator i = mEntries.find(sample); 
    5353  if (i != mEntries.end()) { 
    5454    return &(*i).second; 
    55   } else*/ 
     55  } else 
    5656    return NULL; 
    5757} 
    5858 
    5959template <typename T> 
    60 void mypvs<T>::GetData(const int index, 
     60void Pvs<T>::GetData(const int index, 
    6161               T &entry, 
    6262               PvsData<T> &data) 
    6363{ 
    64   /*PvsMap<typename T>::iterator i = mEntries.begin(); 
     64  std::map<T, PvsData<T>, LtSample<T> >::iterator i = mEntries.begin(); 
    6565  for (int k = 0; k != index && i != mEntries.end(); i++, k++); 
    6666 
    6767  entry = (*i).first; 
    68   data = (*i).second;*/ 
     68  data = (*i).second; 
    6969} 
    7070 
    71 struct LtKdNode 
     71template <typename T> 
     72int Pvs<T>::AddSample(T sample) 
    7273{ 
    73   bool operator()(const KdNode *a, 
    74                   const KdNode *b) const 
    75   { 
    76     return a < b; 
    77   } 
    78    
     74        int result; 
     75        PvsData<T> *data = Find(sample); 
     76 
     77        if (data)  
     78        { 
     79                data->mVisibleSamples ++; 
     80                result = 0; 
     81         
     82        }  
     83        else  
     84        { 
     85                mEntries[sample] = PvsData<T>(1); 
     86                result = 1; 
     87        } 
     88 
     89        return  result; 
     90} 
     91 
     92/** Class instantiating the Pvs template for kd tree nodes. 
     93*/ 
     94class KdPvs: public Pvs<KdNode *> 
     95{ 
     96        int Compress(); 
    7997}; 
    8098 
    81 /** Superclass for all types of PVS data. 
    82 */ 
    83 class Pvs { 
    84 public: 
    85         Pvs(): mSamples(0) {} 
    86         int mSamples; 
     99typedef std::map<KdNode *, PvsData<KdNode *>, LtSample<KdNode *> > KdPvsMap; 
     100typedef PvsData<KdNode *> KdPvsData; 
    87101 
    88         virtual int Compress() = 0; 
    89         virtual int GetSize() = 0; 
    90 }; 
    91  
    92 struct KdPvsData { 
    93   int mVisibleSamples; 
    94   KdPvsData() {} 
    95   KdPvsData(const int samples):mVisibleSamples(samples) {} 
    96 }; 
    97  
    98 typedef std::map<KdNode *, KdPvsData, LtKdNode> KdPvsMap; 
    99  
    100  
    101 class KdPvs: public Pvs { 
    102 public: 
    103   
    104   KdPvsMap mEntries; 
    105    
    106   KdPvs():mEntries() {} 
    107    
    108   KdPvsData *Find(KdNode *node); 
    109   int AddNodeSample(KdNode *node); 
    110   int Compress() {return 0;} 
    111   int GetSize() { return (int)mEntries.size(); } 
    112   void GetData(const int index, 
    113                KdNode *&node, 
    114                KdPvsData &data 
    115                ); 
    116    
    117 }; 
    118  
    119 struct LtBspNode 
    120 { 
    121   bool operator()(const BspNode *a, 
    122                   const BspNode *b) const 
    123   { 
    124           return a < b; 
    125   } 
    126 }; 
    127  
    128 struct BspPvsData { 
    129   int mVisibleSamples; 
    130   BspPvsData() {} 
    131   BspPvsData(const int samples): mVisibleSamples(samples) {} 
    132 }; 
    133  
    134 typedef std::map<BspNode *, BspPvsData, LtBspNode> BspPvsMap; 
    135  
    136 class BspPvs: public Pvs  
    137 { 
    138 public: 
    139         BspPvs(): mEntries() {} 
    140  
    141         BspPvsMap mEntries; 
    142   
    143         BspPvsData *Find(BspNode *node); 
    144         int AddNodeSample(BspNode *node); 
    145          
    146         int Compress() {return 0;} 
    147          
    148         int GetSize() {return (int)mEntries.size();} 
    149          
    150         void GetData(const int index, 
    151                                  BspNode *&node, 
    152                                  BspPvsData &data); 
    153 }; 
    154  
    155  
    156 struct LtIntersectable 
    157 { 
    158   bool operator()(const Intersectable *a, 
    159                   const Intersectable *b) const 
    160   { 
    161           return a < b; 
    162   } 
    163 }; 
    164  
    165 struct ViewCellPvsData { 
    166   int mVisibleSamples; 
    167   ViewCellPvsData() {} 
    168   ViewCellPvsData(const int samples): mVisibleSamples(samples) {} 
    169 }; 
    170  
    171 typedef std::map<Intersectable *, ViewCellPvsData, LtIntersectable> ViewCellPvsMap; 
    172  
    173 class ViewCellPvs  
    174 { 
    175 public: 
    176         ViewCellPvs(): mEntries() {} 
    177  
    178         ViewCellPvsMap mEntries; 
    179   
    180         int Compress() {return 0;} 
    181         int GetSize() {return (int)mEntries.size();} 
    182  
    183         ViewCellPvsData *Find(Intersectable *obj); 
    184         int AddObject(Intersectable *obj); 
    185  
    186         void GetData(const int index,  
    187                                  Intersectable *&obj, 
    188                                  ViewCellPvsData &data); 
    189  
    190 }; 
     102//typedef Pvs<KdNode *> KdPvs; 
     103typedef Pvs<Intersectable *> ViewCellPvs; 
    191104 
    192105#endif 
Note: See TracChangeset for help on using the changeset viewer.