VTK
dox/Filters/Statistics/vtkKMeansDistanceFunctor.h
Go to the documentation of this file.
00001 #ifndef __vtkKMeansDistanceFunctor_h
00002 #define __vtkKMeansDistanceFunctor_h
00003 
00015 #include "vtkFiltersStatisticsModule.h" // For export macro
00016 #include "vtkObject.h"
00017 
00018 class vtkVariantArray;
00019 class vtkAbstractArray;
00020 class vtkTable;
00021 
00022 class VTKFILTERSSTATISTICS_EXPORT vtkKMeansDistanceFunctor : public vtkObject
00023 {
00024 public:
00025   static vtkKMeansDistanceFunctor* New();
00026   vtkTypeMacro(vtkKMeansDistanceFunctor,vtkObject);
00027   virtual void PrintSelf( ostream& os, vtkIndent indent );
00028 
00031   virtual vtkVariantArray* GetEmptyTuple( vtkIdType dimension );
00032 
00035   virtual void operator() ( double&, vtkVariantArray*, vtkVariantArray * );
00036 
00042   virtual void PairwiseUpdate( vtkTable* clusterCenters, vtkIdType row, vtkVariantArray* data, vtkIdType dataCardinality, vtkIdType totalCardinality );
00043 
00050   virtual void PerturbElement( vtkTable*, vtkTable*, vtkIdType, vtkIdType, vtkIdType, double );
00051 
00055   virtual void* AllocateElementArray( vtkIdType size );
00056 
00058   virtual void DeallocateElementArray( void* );
00059 
00063   virtual vtkAbstractArray*  CreateCoordinateArray();
00064 
00068   virtual void PackElements( vtkTable* curTable, void* vElements );
00069 
00071 
00074   virtual void UnPackElements( vtkTable* curTable, vtkTable* newTable, void* vLocalElements, void* vGlobalElements, int np );
00075   virtual void UnPackElements( vtkTable* curTable, void* vLocalElements, vtkIdType numRows, vtkIdType numCols );
00077 
00079   virtual int GetDataType();
00080 
00081 protected:
00082   vtkKMeansDistanceFunctor();
00083   virtual ~vtkKMeansDistanceFunctor();
00084 
00085   vtkVariantArray* EmptyTuple; // Used to quickly initialize Tuple for each datum
00086   vtkTable* CenterUpdates; // Used to hold online computation of next iteration's cluster center coords.
00087 
00088 private:
00089   vtkKMeansDistanceFunctor( const vtkKMeansDistanceFunctor& ); // Not implemented.
00090   void operator = ( const vtkKMeansDistanceFunctor& ); // Not implemented.
00091 };
00092 
00093 #endif // __vtkKMeansDistanceFunctor_h