40 #ifndef ___C_CLUSTER_FUN_AREA__
41 #define ___C_CLUSTER_FUN_AREA__
55 template<
class tValue >
96 virtual double operator() (
const pair< vector< tValue >,
unsigned long > & dataClusterCenter,
97 const pair< vector< tValue >,
unsigned long > & dataPoint )
const{
99 const vector< tValue > & vecDataPointCluster = dataClusterCenter.first;
100 const vector< tValue > & vecDataPoint = dataPoint.first;
101 const unsigned int uiDimensions = min( vecDataPointCluster.size(),
102 vecDataPoint.size() );
104 tValue dDistance = 0;
105 for (
unsigned int uiActualDimension = 0;
106 uiActualDimension < uiDimensions; uiActualDimension++ ){
108 dDistance += abs( ((
int)(vecDataPoint[ uiActualDimension ])) -
109 ((
int)(vecDataPointCluster[ uiActualDimension ])) );
133 const unsigned int uiHalfDimMaxDistance = ( 2 <
dMaxDistance ) ?
136 tValue dDistanceFactor = 0;
137 for (
unsigned int uiActualDimension = 0;
138 uiActualDimension < uiDimensions; uiActualDimension++ ){
140 dDistanceFactor += vecDataPoint[ uiActualDimension ] % uiHalfDimMaxDistance;
142 return (dataClusterCenter.second - dataPoint.second + 1) *
143 ((double)( uiDimensions )) *
dMaxDistance / 2.0 + dDistanceFactor;
155 #endif //___C_CLUSTER_FUN_AREA__