code: def isect_segments__naive(segments):
      
      isect = []
  
      # order points left -> right
      if Real is float:
          segments = [
              (s[0], s[1]) if s[0][X] <= s[1][X] else
              (s[1], s[0])
              for s in segments]
      else:
          segments = [
              (
                  (Real(s[0][0]), Real(s[0][1])),
                  (Real(s[1][0]), Real(s[1][1])),
              ) if (s[0] <= s[1]) else
              (
                  (Real(s[1][0]), Real(s[1][1])),
                  (Real(s[0][0]), Real(s[0][1])),
              )
              for s in segments]
  
      n = len(segments)
  
      for i in range(n):
          a0, a1 = segments[i]
          for j in range(i + 1, n):
              b0, b1 = segments[j]
              if a0 not in (b0, b1) and a1 not in (b0, b1):
                  ix = isect_seg_seg_v2_point(a0, a1, b0, b1)
                  if ix is not None:
                      # USE_IGNORE_SEGMENT_ENDINGS handled already
                      isect.append(ix)
  
      return isect
docs: Brute force O(n2) version of ``isect_segments`` for test validation.