Dist_Point_LineSegment
| main | Tutorials | Functions | website |
Computes the minimum distance between a point and a line segment. The function is vectorized only for one point many lines or many points one line
Version : 1.0
Author : George Kourakos
email: giorgk@gmail.com
web : http://groundwater.ucdavis.edu/msim
Date 18-Mar-2014
Department of Land Air and Water
University of California Davis
Contents
Usage
dst = Dist_Point_LineSegment(px, py, L)
Input
px: [n x 1] x coordinates of point/s. n is the number of points. If n > 1 then the number of lines must be 1.
py: [n x 1] y coordinate of point/s. n is the number of points. If n > 1 then the number of lines must be 1.
L: [N x 4] line defined by two points. The points must be given as follows: [p1x p1y p2x p2y] where (p1x,p1y) are the coordinates of one point and (p2x, p2y) the coordinates of the other end of the line. N is the number of lines. If N > 1 then the number of points must be 1.
Output
dst: the distance between the point the the lines [N x 1] or the points and line.
Example
1st case: Many points one line
Create 10 points and one line
p = 10*rand(10,2); L= [2 5 7 5];
compute the distances between the line and the point
dst = Dist_Point_LineSegment(p(:,1), p(:,2), L)
dst = 4.1713 3.7024 3.2661 1.0906 4.2933 3.0336 4.5083 1.0074 0.2688 1.5042
Plot the points, the lines and the distances between them
plot(p(:,1),p(:,2),'.'); hold on plot([L(1,1) L(1,3)], [L(1,2) L(1,4)],'r') for i = 1:size(p,1) text(p(i,1),p(i,2), [' ' num2str(dst(i))]) end
2nd case: One point many lines
Create a point and 4 lines
p = [5 5]; L= 10*rand(4,4);
compute the distances between the lines and the point
dst = Dist_Point_LineSegment(p(1,1), p(1,2), L)
dst = 0.0922 4.6006 3.9227 1.2448
Plot the points, the lines and the distances between them
hold off plot(p(1,1),p(1,2),'or'); hold on plot([L(1,1) L(1,3)], [L(1,2) L(1,4)],'r') for i = 1:size(L,1) plot([L(i,1) L(i,3)], [L(i,2) L(i,4)],'.-') text((L(i,1) + L(i,3))/2, (L(i,2) + L(i,4))/2, [' ' num2str(dst(i))]) end