Changeset 721 for GTP/trunk/Lib/Illum/IBRBillboardCloudTrees/OGRE/include/LBBC/LBBCKMeansClusterGenerator.h
- Timestamp:
- 03/31/06 17:29:32 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/Lib/Illum/IBRBillboardCloudTrees/OGRE/include/LBBC/LBBCKMeansClusterGenerator.h
r700 r721 1 #ifndef _LBBCKMEANSCLUSTERGENERATOR_H 2 #define _LBBCKMEANSCLUSTERGENERATOR_H 3 1 #ifndef _LBBCKMeansCLUSTERGENERATOR_H 2 #define _LBBCKMeansCLUSTERGENERATOR_H 4 3 5 4 #include <BBC.h> 5 #include <LBBCLeafKMeansClusterData.h> 6 #include <LBBCBillboardKMeansClusterData.h> 7 #include <LBBCLeaf.h> 8 #include <LBBCLeafDistribution.h> 6 9 7 10 namespace LBBC { 8 11 9 class _BBCExport KMeansClusterGenerator : public BBC::BillboardCloudGenerator { 12 class _BBCExport KMeansClusterGenerator: public BBC::BillboardCloudGenerator 13 { 10 14 public: 11 15 void generate(); … … 13 17 void init(); 14 18 19 void setAlpha(float value); 20 21 float getAlpha(); 22 23 void initializeBillboardCloud(); 24 25 BBC::BillboardPtr createBillboard(); 26 27 void initializeBillboardClusterData(BBC::BillboardPtr billboard); 28 29 void initializeRandomBillboard(BBC::BillboardPtr billboard); 30 31 void splitLeafDistribution(); 32 33 void assignLeafBillboard(Leaf *leaf, BBC::BillboardPtr billboard); 34 35 void recomputeBillboardCloud(); 36 37 void recomputeBillboard(BBC::BillboardPtr billboard); 38 39 void iterativeRecomputeBillboardCloud(); 40 41 unsigned int findBestBillboard(Leaf *leaf); 42 43 void generateBillboardCloudBounds(); 44 45 void setNumIterations(unsigned int value); 46 47 unsigned int getNumIterations(); 48 15 49 KMeansClusterGenerator(); 16 50 17 ~KMeansClusterGenerator();51 virtual ~KMeansClusterGenerator(); 18 52 19 53 protected: 20 54 21 class Cell 22 { 23 protected: 24 Cell *right; 25 Cell *left; 26 Ogre::Vector4 min; 27 Ogre::Vector4 max; 28 29 public: 30 Cell() 31 { 32 right = NULL; 33 left = NULL; 34 } 55 float mAlpha; 35 56 36 void setLeftChild(Cell *lChild) 37 { 38 left = lChild; 39 } 57 float mEpsilonYN; 40 58 41 void setRightChild(Cell *rChild) 42 { 43 right = rChild; 44 } 45 46 Cell* getRightChild() 47 { 48 return right; 49 } 50 51 Cell* getLeftChild() 52 { 53 return left; 54 } 55 56 Ogre::Vector4 getMin() 57 { 58 return min; 59 } 60 61 Ogre::Vector4 getMax() 62 { 63 return max; 64 } 65 66 void setMax(Ogre::Vector4 vmax) 67 { 68 max = vmax; 69 } 70 71 void setMin(Ogre::Vector4 vmin) 72 { 73 min = vmin; 74 } 75 }; 76 59 float mNumIterations; 77 60 }; 78 61
Note: See TracChangeset
for help on using the changeset viewer.