whole_func_string: function compareEvent(a, b) {
    var d =
      (a.a[0] - b.a[0]) ||
      (a.a[1] - b.a[1]) ||
      (a.type - b.type)
    if(d) { return d }
    if(a.type !== EVENT_POINT) {
      d = orient(a.a, a.b, b.b)
      if(d) { return d }
    }
    return a.idx - b.idx
  }
func_code_string: function compareEvent(a, b) {
    var d =
      (a.a[0] - b.a[0]) ||
      (a.a[1] - b.a[1]) ||
      (a.type - b.type)
    if(d) { return d }
    if(a.type !== EVENT_POINT) {
      d = orient(a.a, a.b, b.b)
      if(d) { return d }
    }
    return a.idx - b.idx
  }
func_documentation_string: This is used to compare events for the sweep line procedure Points are: 1. sorted lexicographically 2. sorted by type  (point < end < start) 3. segments sorted by winding order 4. sorted by index