/* * numericUtilities.cpp * * * Created by Arne Pommerening on 13/01/2013. * Copyright 2013 Philodendron. All rights reserved. * */ #include #include using namespace Rcpp; using namespace std; double getEuclideanDistance(double xmax, double ymax, double x1, double y1, double x2, double y2) { // Illian et al. (2008), p. 184 double dx=fabs(x1-x2); double dy=fabs(y1-y2); dx=min(dx, xmax-dx); dy=min(dy, ymax-dy); double dz=sqrt(dx*dx+dy*dy); return dz; } double findNeighbours(double xmax, double ymax, NumericVector x, NumericVector y, int mi) { double d=0; bool abort; int dummy=0; int k=0; /* Number of required neighbours. */ dummy=mi; int na = x.size(); double distance[na][mi]; for(int i=0;ik+1;l--) distance[i][l]=distance[i][l-1]; distance[i][k+1]=d; } abort=false; k=dummy-1; while (abort==false) if(k==-1) abort=true; else if(dk+1;l--) distance[j][l]=distance[j][l-1]; distance[j][k+1]=d; } } } double d1=0; for(int i=0;i