Exemplo n.º 1
0
  void IDMapper::increaseBoundingBox_(DBoundingBox<2> & box)
  {
    DPosition<2> sub_min(rt_tolerance_,
                         getAbsoluteMZTolerance_(box.minPosition().getY())),
    add_max(rt_tolerance_, getAbsoluteMZTolerance_(box.maxPosition().getY()));

    box.setMin(box.minPosition() - sub_min);
    box.setMax(box.maxPosition() + add_max);
  }
Exemplo n.º 2
0
	iterator eraser(iterator iter){
		rb_node* z=iter.pointer();
		rb_node* y=z;
		RB_Color y_color=y->_color;
		rb_node *x=NULL;

		if(z->_left==_nil ){ //case1: z's left child is nil
			x=z->_right;
			transplant(z, z->_right);
		}
		else{
			if(z->_right==_nil){// case2: z's right child is nil
				x=z->_left;
				transplant(z, z->_left);
			}
			else{//case3: both children of z are not nil 
				y=sub_min(z->_right).pointer();
				y_color=y->_color;
			    x=y->_right;
				if(y->_parent==z)
					x->_parent=y;
				else{
					transplant(y, y->_right);
					//link z's right subtree into y, only y isn't z's child;
					y->_right=z->_right;
					y->_right->_parent=y;
				}
				transplant(z, y);
				//link z's subtree into y.
				y->_left=z->_left;
				y->_left->_parent=y;
				y->_color=z->_color;
			}
		}
		iterator result = ++iterator(z);
		delete z;
		if(y_color==black)
			eraser_fixup(x);
		return result;
	};
Exemplo n.º 3
0
	iterator begin(){
		return sub_min(_root);
	}