Exemplo n.º 1
0
void SetNodeReg::compare(const IntervalVector& root, const IntervalVector& box,const int& type, bool * flag,unsigned int op) {
	if(is_leaf()) { 
		//cout<<"leaf box: "<<root<<"of status: "<<status<<" box: "<<box<<endl;
		switch(op){
			case 0: 
				if(status != type){*flag = false;}
				break;
			case 1: 
				if(status == type){*flag = true;}
				break;
			case 2: 
				if(status == type){*flag = false;}
				break;
			}
	}
	else if(((op==0||op==2)&& (*flag)) || (op ==1 && !(*flag))) {
		if(root.intersects(right_box(box)))
		{right->compare(right_box(root),box,type,flag,op);}
		if(root.intersects(left_box(box)))
		{left->compare(left_box(root),box,type,flag,op);}
	}
	return;


}
Exemplo n.º 2
0
void SetNodeReg::findNeighbor(const IntervalVector& box,const IntervalVector& nbox,vector<SetNodeReg*> * neigh) {
	if(is_leaf()){
		if(box.intersects(nbox)  && box!=nbox ) 
			neigh->push_back(this);
	}
    else if(box.intersects(nbox)) {
            right->findNeighbor(right_box(box),nbox,neigh);
            left->findNeighbor(left_box(box),nbox,neigh);
        }
}
Exemplo n.º 3
0
int Interset(IntervalVector x, IntervalVector y) {
assert(x.size() == y.size());
int res = 2;
int i;
for(i = 0;i<x.size();i++) {
	if (!x[i].is_subset(y[i])) {
		res = 1;
		break;}
	}
while(i<x.size()) {
    if(!x.intersects(y)) {
		res = 0;
		return res;
	}
	i++;}
return res;}