# nearest tangent point from Ginput point to line ?

3 views (last 30 days)
Ramesh Bala on 22 Oct 2018
Commented: Image Analyst on 30 Oct 2018
I'm trying to get the nearest by creating a ginput and then ginput point finds the nearest point to the line.
x = [0,20]
y= [20,50]
plot(x,y)
[x,y] = ginput(1);
h1 = text(x,y,'o', ...
'HorizontalAlignment','center', ...
'Color', [1 0 0], ...
'FontSize',8);
Ramesh Bala on 22 Oct 2018 Rik on 22 Oct 2018
My FEX submission should help here. Unlike what the documented behavior should be, pt is actually not extended to 3D automatically, so you'll have to do that yourself until I update the file. The code below should work as intended.
x = [0,20];
y= [20,50];
v1=[x(1) y(1) 0];
v2=[x(2) y(2) 0];
plot(x,y)
[x,y] = ginput(1);
pt=[x(:),y(:),zeros(numel(y),1)];
h1 = text(x,y,'o', ...
'HorizontalAlignment','center', ...
'Color', [1 0 0], ...
'FontSize',8);
distance=point_to_line_distance(pt, v1, v2)
Image Analyst on 30 Oct 2018
Perhaps have your code draw a line from the point perpendicularly to the closest point on the line, then run your code, and save a screenshot of the figure and upload it. Maybe if he sees that he will accept it.

Image Analyst on 22 Oct 2018
Use sqrt():
uiwait(helpdlg('Click one point.'));
[xUser, yUser] = ginput(1);
distances = sqrt((xUser - xLine).^2 + (yUser - yLine) .^ 2);
[minDistance, indexOfMin] = min(distances);
hold on;
% Put a marker on the line.
plot(xLine(indexOfMin), yLine(indexOfMin), 'r*');
% Draw a line from the user-clicked point to the point on the line.
line([xUser, xLine(indexOfMin)], [yUser, yLine(indexOfMin)], 'LineWIdth', 2, 'Color', 'r');
Image Analyst on 23 Oct 2018
OK, I thought you had a bunch of points along a line, not just two. In that case you'll have to use the point-to-line distance formula, which are readily avalable all over the web.