/** * Because Delete Events have a link to their corresponding Insert event, * it is possible to compute exactly the range of events which must be * compared to a given Insert event object. */ void SimpleSweepLineIntersector::prepareEvents() { sort(events.begin(), events.end(), SweepLineEventLessThen()); for(unsigned int i=0; i<events.size(); ++i ) { SweepLineEvent *ev=events[i]; if (ev->isDelete()) { ev->getInsertEvent()->setDeleteEventIndex(i); } } }
/** * Because Delete Events have a link to their corresponding Insert event, * it is possible to compute exactly the range of events which must be * compared to a given Insert event object. */ void SimpleMCSweepLineIntersector::prepareEvents() { sort(events.begin(), events.end(), SweepLineEventLessThen()); for(size_t i=0; i<events.size(); ++i) { GEOS_CHECK_FOR_INTERRUPTS(); SweepLineEvent *ev=events[i]; if (ev->isDelete()) { ev->getInsertEvent()->setDeleteEventIndex(i); } } }
/*private*/ void SweepLineIndex::buildIndex() { if (!indexBuilt) { sort(events.begin(), events.end(), SweepLineEventLessThen()); const std::vector<SweepLineEvent*>::size_type n = events.size(); for(std::vector<SweepLineEvent*>::size_type i = 0; i < n; i++) { SweepLineEvent *ev=events[i]; if (ev->isDelete()) { ev->getInsertEvent()->setDeleteEventIndex(static_cast<int>(i)); } } indexBuilt = true; } }