#include <ANN.h>
Public Member Functions | |
ANNbruteForce (ANNpointArray pa, int n, int dd) | |
~ANNbruteForce () | |
void | annkSearch (ANNpoint q, int k, ANNidxArray nn_idx, ANNdistArray dd, double eps=0.0) |
int | annkFRSearch (ANNpoint q, ANNdist sqRad, int k=0, ANNidxArray nn_idx=NULL, ANNdistArray dd=NULL, double eps=0.0) |
int | theDim () |
int | nPoints () |
ANNpointArray | thePoints () |
Definition at line 544 of file ANN.h.
ANNbruteForce::ANNbruteForce | ( | ANNpointArray | pa, |
int | n, | ||
int | dd | ||
) |
ANNbruteForce::~ANNbruteForce | ( | ) |
int ANNbruteForce::annkFRSearch | ( | ANNpoint | q, |
ANNdist | sqRad, | ||
int | k = 0 , |
||
ANNidxArray | nn_idx = NULL , |
||
ANNdistArray | dd = NULL , |
||
double | eps = 0.0 |
||
) | [virtual] |
Implements ANNpointSet.
Definition at line 80 of file brute.cpp.
References ANN_ALLOW_SELF_MATCH, annDist(), ANNmin_k::insert(), ANNmin_k::ith_smallest_info(), and ANNmin_k::ith_smallest_key().
{ ANNmin_k mk(k); // construct a k-limited priority queue int i; int pts_in_range = 0; // number of points in query range // run every point through queue for (i = 0; i < n_pts; i++) { // compute distance to point ANNdist sqDist = annDist(dim, pts[i], q); if (sqDist <= sqRad && // within radius bound (ANN_ALLOW_SELF_MATCH || sqDist != 0)) { // ...and no self match mk.insert(sqDist, i); pts_in_range++; } } for (i = 0; i < k; i++) { // extract the k closest points if (dd != NULL) dd[i] = mk.ith_smallest_key(i); if (nn_idx != NULL) nn_idx[i] = mk.ith_smallest_info(i); } return pts_in_range; }
void ANNbruteForce::annkSearch | ( | ANNpoint | q, |
int | k, | ||
ANNidxArray | nn_idx, | ||
ANNdistArray | dd, | ||
double | eps = 0.0 |
||
) | [virtual] |
Implements ANNpointSet.
Definition at line 54 of file brute.cpp.
References ANN_ALLOW_SELF_MATCH, ANNabort, annDist(), annError(), ANNmin_k::insert(), ANNmin_k::ith_smallest_info(), and ANNmin_k::ith_smallest_key().
{ ANNmin_k mk(k); // construct a k-limited priority queue int i; if (k > n_pts) { // too many near neighbors? annError("Requesting more near neighbors than data points", ANNabort); } // run every point through queue for (i = 0; i < n_pts; i++) { // compute distance to point ANNdist sqDist = annDist(dim, pts[i], q); if (ANN_ALLOW_SELF_MATCH || sqDist != 0) mk.insert(sqDist, i); } for (i = 0; i < k; i++) { // extract the k closest points dd[i] = mk.ith_smallest_key(i); nn_idx[i] = mk.ith_smallest_info(i); } }
int ANNbruteForce::nPoints | ( | ) | [inline, virtual] |
int ANNbruteForce::theDim | ( | ) | [inline, virtual] |
ANNpointArray ANNbruteForce::thePoints | ( | ) | [inline, virtual] |