void FiberPushCutter::pushCutter2(Fiber& f) {
    std::list<Triangle>::iterator it,it_end;    // for looping over found triangles
    Interval* i;
    std::list<Triangle>* tris;
    CLPoint cl;
    if ( x_direction ) {
        cl.x=0;
        cl.y=f.p1.y;
        cl.z=f.p1.z;
    } else if (y_direction ) {
        cl.x=f.p1.x;
        cl.y=0;
        cl.z=f.p1.z;
    }
    tris = root->search_cutter_overlap(cutter, &cl);
    it_end = tris->end();
    for ( it=tris->begin() ; it!=it_end ; ++it) {
		i = new Interval();
		cutter->pushCutter(f,*i,*it);
		f.addInterval(*i); 
		++nCalls;
		delete i;
    }
    delete( tris );
}
void FiberPushCutter::pushCutter1(Fiber& f) {
    nCalls = 0;
    BOOST_FOREACH( const Triangle& t, surf->tris) {// test against all triangles in s
        Interval i;
        cutter->pushCutter(f,i,t);
        f.addInterval(i);
        ++nCalls;
    }
}