# Shortest Distance Between Points and Line Segments

In some applications, it is necessary to calculate the shortest distance between a point and a set of line segments defined by pairs of points. To find the distance between a point and each line segment, one approach is to use a loop to iterate over each line segment and calculate the distance using a formula or algorithm. However, this can be slow for large datasets.
The optimal solution can be achieved using the following NumPy arrays and functions.

#### 1. Using the “np.linalg.norm()” function:

NumPy provides several built-in functions that can simplify the calculation of distances between points and lines. One such function is `np.linalg.norm()`, which calculates the Euclidean norm of an array.

• import the NumPy library and assign it the alias `np`.
• Then, we calculate the projection of `p` onto each line segment using the dot product between `T` and the vector from `P0` to `p`.
• We then clip the values of `U` to ensure that the projection falls within the bounds of the line segment.
• Finally, we calculate the closest point `C` on the line segment to `p` using the projection `U` and the vector `T`, and compute the Euclidean distance between `p` and `C`.

#### 2. Using “cross product”:

• import the NumPy library and assign it the alias `np`.
• The function `distance` calculates the shortest distance between a point `p` and a set of line segments defined by pairs of points `P0` and `P1`.
• it first calculates the vector `T` representing the direction and magnitude of each line segment by subtracting `P0` from `P1`.
• It also calculates the vector `V` between `P0` and `p`.
• it uses the cross product of `T` and `V` to calculate the area of a parallelogram formed by these vectors.
• The absolute value of the cross product is divided by the length of `T` to get the distance between the point and the line segment.
• The function returns an array of distances, where each distance corresponds to a line segment defined by `P0` and `P1`.