I'm looking for a function to compute the euclidian distance between a numpy array of points with two coordinates (x, y) and a line segment. My goal is to have a result in under 0.01 sec for a line segment and 10k points.
I already found a function for a single point. But running a for loop is very inefficient.
I also found this function that calculates the distance to the infinite line:
def line_dists(points, start, end):
if np.all(start == end):
return np.linalg.norm(points - start, axis=1)
vec = end - start
cross = np.cross(vec, start - points)
return np.divide(abs(cross), np.linalg.norm(vec))
It is very efficient and I would like to have a similar approach for a bounded line.
Thank you for your help.