#ifndef _LBBCKMeansCLUSTERGENERATOR_H #define _LBBCKMeansCLUSTERGENERATOR_H #include #include #include #include #include namespace LBBC { class _BBCExport KMeansClusterGenerator: public BBC::BillboardCloudGenerator { public: void generate(); void init(); void setAlpha(float value); float getAlpha(); void initializeBillboardCloud(); BBC::BillboardPtr createBillboard(); void initializeBillboardClusterData(BBC::BillboardPtr billboard); void initializeRandomBillboard(BBC::BillboardPtr billboard); void splitLeafDistribution(); void assignLeafBillboard(Leaf *leaf, BBC::BillboardPtr billboard); void recomputeBillboardCloud(); void recomputeBillboard(BBC::BillboardPtr billboard); void iterativeRecomputeBillboardCloud(); unsigned int findBestBillboard(Leaf *leaf); void generateBillboardCloudBounds(); void setNumIterations(unsigned int value); unsigned int getNumIterations(); KMeansClusterGenerator(); virtual ~KMeansClusterGenerator(); protected: float mAlpha; float mEpsilonYN; float mNumIterations; }; } #endif