/*private*/ void BufferOp::bufferFixedPrecision(const PrecisionModel& fixedPM) { PrecisionModel pm(1.0); // fixed as well #if 0 /* FIXME: MCIndexSnapRounder seems to be still bogus */ snapround::MCIndexSnapRounder inoder(pm); #else algorithm::LineIntersector li(&fixedPM); IntersectionAdder ia(li); MCIndexNoder inoder(&ia); #endif ScaledNoder noder(inoder, fixedPM.getScale()); BufferBuilder bufBuilder(bufParams); bufBuilder.setWorkingPrecisionModel(&fixedPM); bufBuilder.setNoder(&noder); // this may throw an exception, if robustness errors are encountered resultGeometry=bufBuilder.buffer(argGeom, distance); }
/*private*/ void BufferOp::bufferFixedPrecision(const PrecisionModel& fixedPM) { PrecisionModel pm(1.0); // fixed as well snapround::MCIndexSnapRounder inoder(pm); ScaledNoder noder(inoder, fixedPM.getScale()); BufferBuilder bufBuilder(bufParams); bufBuilder.setWorkingPrecisionModel(&fixedPM); bufBuilder.setNoder(&noder); // this may throw an exception, if robustness errors are encountered resultGeometry=bufBuilder.buffer(argGeom, distance); }
/*private*/ void BufferOp::bufferOriginalPrecision() { BufferBuilder bufBuilder(bufParams); //std::cerr<<"computing with original precision"<<std::endl; try { resultGeometry=bufBuilder.buffer(argGeom, distance); } catch (const util::TopologyException& ex) { // don't propagate the exception - it will be detected by // fact that resultGeometry is null saveException=ex; //std::cerr<<ex->toString()<<std::endl; } //std::cerr<<"done"<<std::endl; }