static void sortPtsX(int n, ANNpointArray pts){
/* sort so that edges always go from left to right in x-doordinate */
- ANNpoint p;
- int i;
- for (i = 0; i < n; i++){
- p = pts[i];
+ for (int i = 0; i < n; i++){
+ ANNpoint p = pts[i];
if (p[0] < p[2] || (p[0] == p[2] && p[1] < p[3])) continue;
std::swap(p[0], p[2]);
std::swap(p[1], p[3]);
static void sortPtsY(int n, ANNpointArray pts){
/* sort so that edges always go from left to right in x-doordinate */
- ANNpoint p;
- int i;
- for (i = 0; i < n; i++){
- p = pts[i];
+ for (int i = 0; i < n; i++){
+ ANNpoint p = pts[i];
if (p[1] < p[3] || (p[1] == p[3] && p[0] < p[2])) continue;
std::swap(p[0], p[2]);
std::swap(p[1], p[3]);
note that there could be repeates
*/
- ANNpointArray dataPts; // data points
-
- double *xx;
- int *irn, *jcn;
- double *val;
- int nz;
-
- irn = *irn0;
- jcn = *jcn0;
- val = *val0;
+ int *irn = *irn0;
+ int *jcn = *jcn0;
+ double *val = *val0;
- dataPts = annAllocPts(nPts, dim); // allocate data points
+ ANNpointArray dataPts = annAllocPts(nPts, dim); // allocate data points
std::vector<ANNidx> nnIdx(k); // allocate near neighbor indices
std::vector<ANNdist> dists(k); // allocate near neighbor dists
for (int i = 0; i < nPts; i++){
- xx = dataPts[i];
+ double *xx = dataPts[i];
for (int j = 0; j < dim; j++) xx[j] = x[i*dim + j];
}
//========= graph when sort based on x ========
- nz = 0;
+ int nz = 0;
sortPtsX(nPts, dataPts);
ANNkd_tree kdTree( // build search structure
dataPts, // the data points