code: def segment_length(curve, start, end, start_point, end_point,
                     error=LENGTH_ERROR, min_depth=LENGTH_MIN_DEPTH, depth=0):
      
      mid = (start + end)/2
      mid_point = curve.point(mid)
      length = abs(end_point - start_point)
      first_half = abs(mid_point - start_point)
      second_half = abs(end_point - mid_point)
  
      length2 = first_half + second_half
      if (length2 - length > error) or (depth < min_depth):
          # Calculate the length of each segment:
          depth += 1
          return (segment_length(curve, start, mid, start_point, mid_point,
                                 error, min_depth, depth) +
                  segment_length(curve, mid, end, mid_point, end_point,
                                 error, min_depth, depth))
      # This is accurate enough.
      return length2
docs: Recursively approximates the length by straight lines