Circle plot and random point on circle

Hi,
I drawn a circle on matlab with parametric equations. I give the xcenter,ycenter,r(x1,y1,r1) and the s.S is the number of points which equidistant(have the same distance on circle). I drawn some points on circle and I want to draw 4 random points around. My code is:
t1 = 0:(pi/(5*s1)):2*pi; % s1 is the number of points I want
x1unit = r1 * cos(t1) + x1;
y1unit = r1 * sin(t1) + y1;
a1=x1unit(1:10:s1*10); %points around on circle
b1=y1unit(1:10:s1*10);
plot(x1unit, y1unit, 'b', x1, y1, 'ok');%circle
plot(a1, b1, 'o');
I want random points on circle 3 ,4,or 5 or more on circle.But I couldn't to success it , yes. Could you help me?
Thanks in andvance,

 採用された回答

Image Analyst
Image Analyst 2018 年 9 月 16 日
編集済み: Image Analyst 2018 年 9 月 16 日

1 投票

Try this:
% Plot a circle.
angles = linspace(0, 2*pi, 720); % 720 is the total number of points
radius = 20;
xCenter = 50;
yCenter = 40;
x = radius * cos(angles) + xCenter;
y = radius * sin(angles) + yCenter;
% Plot circle.
plot(x, y, 'b-', 'LineWidth', 2);
% Plot center.
hold on;
plot(xCenter, yCenter, 'k+', 'LineWidth', 2, 'MarkerSize', 16);
grid on;
axis equal;
xlabel('X', 'FontSize', 16);
ylabel('Y', 'FontSize', 16);
% Now get random locations along the circle.
s1 = 5; % Number of random points to get.
randomIndexes = randperm(length(angles), s1)
xRandom = x(randomIndexes);
yRandom = y(randomIndexes);
plot(xRandom, yRandom, 'ro', 'LineWidth', 2, 'MarkerSize', 16);

5 件のコメント

Image Analyst
Image Analyst 2018 年 9 月 16 日
Eleni's "Answer" moved here since it's not an answer to the original post, but a reply to mine:
thank you,
but I want the new random points and the s1 points. In this way, I have only the new random points.
a1=x1unit(1:10:s1*10); %points around on circle
b1=y1unit(1:10:s1*10);
Here is the code with equals points on circle
Image Analyst
Image Analyst 2018 年 9 月 16 日
720 is the total number of points. You can replace this by whatever you want. s1 is a scalar and is the number of points randomly selected from full set of 720 points. The "new random points" (all s1 of them) are all held in vectors xRandom and yRandom. I think you have everything you need, don't you?
Eleni agou
Eleni agou 2018 年 9 月 16 日
yes!!
thank you for your time
mehrdad tanomand
mehrdad tanomand 2021 年 9 月 3 日
How can I do this for multiple circles?
I want to get a random point on the perimeter of each circle
thank you
Image Analyst
Image Analyst 2021 年 9 月 3 日
It's the same process. Wrap it all in a function if you want where you pass it the center and the radius and return the randomly located point.
% Demo by Image Analyst
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 20;
for k = 1 : 5
xCenter = 10 * k;
yCenter = 10 * k;
radius = k;
numPoints = 4;
[xRandom, xRandom] = GetRandomPointsOnACircle(xCenter, yCenter, radius, numPoints)
end
%-----------------------------------------------------------------------------------------------
function [xRandom, yRandom] = GetRandomPointsOnACircle(xCenter, yCenter, radius, numPoints)
angles = linspace(0, 2*pi, 720); % 720 is the total number of points
x = radius * cos(angles) + xCenter;
y = radius * sin(angles) + yCenter;
% Now get random locations along the circle.
randomIndexes = randperm(length(angles), numPoints);
xRandom = x(randomIndexes);
yRandom = y(randomIndexes);
% Optional plotting of the circle and points..
showPlot = true;
% Plot a circle.
if showPlot
% Plot circle perimeter.
plot(x, y, 'b-', 'LineWidth', 2);
% Plot center.
hold on;
plot(xCenter, yCenter, 'k+', 'LineWidth', 2, 'MarkerSize', 16);
grid on;
axis equal;
xlabel('X', 'FontSize', 16);
ylabel('Y', 'FontSize', 16);
% Plot the random points.
plot(xRandom, yRandom, 'ro', 'LineWidth', 2, 'MarkerSize', 6);
end
end % of function GetRandomPointsOnACircle()

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

その他の回答 (0 件)

カテゴリ

Community Treasure Hunt

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

Start Hunting!

Translated by