pub fn subdivide_segments<T, I, Ctr, P, UpdateCtrFn>(
    edge_intersection: I,
    event_queue: &mut BinaryHeap<Rc<SweepEvent<T, Ctr, P>>>,
    update_counter: UpdateCtrFn
) -> Vec<Rc<SweepEvent<T, Ctr, P>>>where
    I: Fn(&Edge<T>, &Edge<T>) -> EdgeIntersection<T, T, Edge<T>>,
    T: CoordinateType + Debug,
    Ctr: Clone + Default,
    P: Clone,
    UpdateCtrFn: Fn(&Rc<SweepEvent<T, Ctr, P>>, Option<&Rc<SweepEvent<T, Ctr, P>>>),
Expand description

Find all intersecting segments and subdivide them such that the set of resulting segments contains no intersecting segments anymore. The resulting events are sorted by their coordinates.