def dist_point_to_segment(p, s0, s1):
 p = np.asarray(p, float)
 s0 = np.asarray(s0, float)
 s1 = np.asarray(s1, float)
 v = (s1 - s0)
 w = (p - s0)
 c1 = np.dot(w, v)
 if (c1 <= 0):
  return dist(p, s0)
 c2 = np.dot(v, v)
 if (c2 <= c1):
  return dist(p, s1)
 b = (c1 / c2)
 pb = (s0 + (b * v))
 return dist(p, pb)

def dist_point_to_segment ( p , s0 , s1 ) : p = np . asarray ( p , float ) s0 = np . asarray ( s0 , float ) s1 = np . asarray ( s1 , float ) v = ( s1 - s0 ) w = ( p - s0 ) c1 = np . dot ( w , v ) if ( c1 <= 0 ) : return dist ( p , s0 ) c2 = np . dot ( v , v ) if ( c2 <= c1 ) : return dist ( p , s1 ) b = ( c1 / c2 ) pb = ( s0 + ( b * v ) ) return dist ( p , pb )
get the distance of a point to a segment .