nearest tangent point from Ginput point to line ?

조회 수: 2 (최근 30일)
Ramesh Bala
Ramesh Bala 2018년 10월 22일
댓글: Image Analyst 2018년 10월 30일
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);

채택된 답변

Rik
Rik 2018년 10월 22일
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
Rik
Rik 2018년 10월 30일
Did this suggestion solve your problem? If so, please consider marking it as accepted answer. It will make it easier for other people with the same question to find an answer. If this didn't solve your question, please comment with what problems you are still having.
Image Analyst
Image Analyst 2018년 10월 30일
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.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Image Analyst
Image Analyst 2018년 10월 22일
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
Ramesh Bala
Ramesh Bala 2018년 10월 23일
It's like the point getting projected to the line @ shortest travel distance.
Image Analyst
Image Analyst 2018년 10월 23일
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.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Visual Exploration에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by