# nearest tangent point from Ginput point to line ?

7 views (last 30 days)

Show older comments

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);

### Accepted Answer

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)

##### 11 Comments

Rik
on 30 Oct 2018

Image Analyst
on 30 Oct 2018

### More Answers (1)

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');

##### 3 Comments

Image Analyst
on 23 Oct 2018

### See Also

### Categories

### Products

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!