code: def lineOffsetWithMinimumDistanceToPoint(point, line_start, line_end, perpendicular=False):
      
      p = point
      p1 = line_start
      p2 = line_end
      l = distance(p1, p2)
      u = ((p[0] - p1[0]) * (p2[0] - p1[0])) + ((p[1] - p1[1]) * (p2[1] - p1[1]))
      if l == 0 or u < 0.0 or u > l * l:
          if perpendicular:
              return INVALID_DISTANCE
          if u < 0:
              return 0
          return l
      return u / l
docs: Return the offset from line (line_start, line_end) where the distance to
      point is minimal