8 #define ABS(i) ((i)<0 ?-(i) :(i))
10 #define MAXISIZE 1073741824 //2^30
11 #define MAXICOORD 1073741823 //2^30 - 1 = =111...111 (29 times one)
85 if(nbv==-1) nbv=t->
nbv;
86 for(
int i=0;i<nbv;i++){
94 vector<BamgQuadtreeBox*>::reverse_iterator object;
110 long i=w.
i.
x, j=w.
i.
y;
119 while((b=*pb) && (b->
nbitems<0)){
134 if (b->
nbitems > 3 && b->
v[3] == &w)
return;
135 if (b->
nbitems > 2 && b->
v[2] == &w)
return;
136 if (b->
nbitems > 1 && b->
v[1] == &w)
return;
137 if (b->
nbitems > 0 && b->
v[0] == &w)
return;
145 while ((b= *pb) && (b->
nbitems == 4)){
165 for (
int k=0;k<4;k++){
221 return ((j&l) ? ((i&l) ? 3:2 ) :((i&l) ? 1:0 ));
225 return ((y) > (a)) && ((x) <(b));
261 if((b0==NULL) || (b0->
nbitems==0))
break;
280 for(
int k=0;k<n0;k++){
281 int xiv = b->
v[k]->
i.
x;
282 int yiv = b->
v[k]->
i.
y;
284 int h0 =
Norm(xi2,xiv,yi2,yiv);
327 int h0 =
Norm(xi2,b->
v[k]->
i.
x,yi2,b->
v[k]->
i.
y);
382 int BamgQuadtree::Norm(
int xi1,
int xi2,
int yi1,
int yi2){
384 int deltax = xi2 - xi1;
385 int deltay = yi2 - yi1;
387 if(deltax<0) deltax = -deltax;
388 if(deltay<0) deltay = -deltay;
397 void BamgQuadtree::SubBoxCoords(
int* pi,
int*pj,
int boxnumber,
int length){
419 *pi += ((boxnumber & 1) ? length:0);
421 *pj += ((boxnumber & 2) ? length:0);
428 const double Xx = v->
r.
x;
429 const double Xy = v->
r.
y;
442 if(!root->nbitems)
return 0;
446 pi[0]=root->
nbitems>0 ?(int)root->nbitems:4;
455 int i2x = b->
v[k]->
i.
x;
456 int i2y = b->
v[k]->
i.
y;
457 if (
ABS(i-i2x)<hx &&
ABS(j-i2y) <hy ){
458 double XYx = b->
v[k]->
r.
x - Xx;
459 double XYy = b->
v[k]->
r.
y - Xy;
472 this->SubBoxCoords(&iii,&jjj,k,hb);
474 if(this->Intersection(iii,iii+hb,i-hx,i+hx) && this->Intersection(jjj,jjj+hb,j-hy,j+hy)){
513 boxcontainer.push_back(newbox);
514 this->NbQuadtreeBox++;