Selecting certain points off a plot

I have create a circle and, using ginput, select two points on the circumference of that circle, create a line between those two points and then calculate the distance. This is what I have so far:
Array = linspace(0, 2*pi, 200);
x = cos(Array);
y = sin(Array);
plot(x,y)
[x1, y1] = ginput(2)
plot(x1,y1)
Distance = sqrt(x1.^2+y1.^2)
My problem is how do I confirm that the points selected are actually on the circumference, or is there a specific ginput I can use that will only allow me to select points from that circle.
Creating the line isn't a problem, but calculating the distance is (the distance formula above still comes back with two numbers).
Thanks

 採用された回答

Image Analyst
Image Analyst 2013 年 11 月 28 日

0 投票

Try this:
Array = linspace(0, 2*pi, 200);
x = cos(Array);
y = sin(Array);
plot(x,y, 'bo-')
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);
% Give a name to the title bar.
set(gcf, 'Name', 'Demo by ImageAnalyst', 'NumberTitle', 'Off')
promptMessage = sprintf('Click two points,\nor Cancel to abort processing?');
titleBarCaption = 'Continue?';
button = questdlg(promptMessage, titleBarCaption, 'Continue', 'Cancel', 'Continue');
if strcmpi(button, 'Cancel')
return;
end
[twoPointsX, twoPointsY] = ginput(2)
hold on;
plot(twoPointsX,twoPointsY, 'rd')
% Find the point closest to the first clicked point.
distances = sqrt((x - twoPointsX(1)) .^2 + (y - twoPointsY(1)) .^ 2)
[minDistance1, index1] = min(distances)
% Find the point closest to the Second clicked point.
distances = sqrt((x - twoPointsX(2)) .^2 + (y - twoPointsY(2)) .^ 2)
[minDistance2, index2] = min(distances)
% Plot the points on the circumference in red squares.
plot([x(index1), x(index2)], [y(index1), y(index2)], 'rs-')
% Calculate the final distance:
distance = sqrt( (x(index1)-x(index2))^2 + (y(index1)-y(index2))^2)
message = sprintf('The distance = %f', distance);
uiwait(helpdlg(message));

2 件のコメント

Image Analyst
Image Analyst 2013 年 11 月 28 日
Ada
Ada 2013 年 11 月 28 日
編集済み: Ada 2013 年 11 月 28 日
This was exactly was I was looking for, specifically the part that locates the nearest point on the circle. Thanks.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

製品

質問済み:

Ada
2013 年 11 月 28 日

編集済み:

Ada
2013 年 11 月 28 日

Community Treasure Hunt

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

Start Hunting!

Translated by