// Test of closest pair algorithms // David Eppstein, UC Irvine, 19 Apr 1997 // // Generate n vectors in R^d, with varying distances #include "PointSet.h" class VectorPointSet : public PointSet { double * points; protected: int d; public: virtual double VecDistance(double *, double *) { return 0.0; } VectorPointSet(unsigned long npoints, int dim); ~VectorPointSet() { delete points; } double operator() (point i, point j) { gDistances++; return VecDistance(points+i*d, points+j*d); } void interact(point, point); }; class VectorL1 : public VectorPointSet { public: VectorL1 (unsigned long np, int dim) : VectorPointSet(np, dim) { ; } double VecDistance(double *, double *); }; class VectorL2 : public VectorPointSet { public: VectorL2 (unsigned long np, int dim) : VectorPointSet(np, dim) { ; } double VecDistance(double *, double *); }; class VectorLinf : public VectorPointSet { public: VectorLinf (unsigned long np, int dim) : VectorPointSet(np, dim) { ; } double VecDistance(double *, double *); }; class VectorDot : public VectorPointSet { public: VectorDot (unsigned long np, int dim) : VectorPointSet(np, dim) { ; } double VecDistance(double *, double *); };