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

 Respuesta aceptada

Image Analyst
Image Analyst el 28 de Nov. de 2013
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 comentarios

Image Analyst
Image Analyst el 28 de Nov. de 2013
Ada
Ada el 28 de Nov. de 2013
Editada: Ada el 28 de Nov. de 2013
This was exactly was I was looking for, specifically the part that locates the nearest point on the circle. Thanks.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Data Exploration en Centro de ayuda y File Exchange.

Productos

Etiquetas

Preguntada:

Ada
el 28 de Nov. de 2013

Editada:

Ada
el 28 de Nov. de 2013

Community Treasure Hunt

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

Start Hunting!

Translated by