dividing a circle into equal n parts and then generate random point inside each part

조회 수: 16 (최근 30일)
I am trying to divide a circle (given the radius and the center)into n parts and then generate random points inside each part . If anyone has a sample code or can help me with this, thanks in advance.

채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2013년 10월 19일
편집: Azzi Abdelmalek 2013년 10월 19일
x0=2;
y0=1;
r=1;
teta=-pi:0.01:pi;
x=r*cos(teta)+x0
y=r*sin(teta)+y0
plot(x,y)
hold on
scatter(x0,y0,'or')
axis square
%----------------------------------------
% divide your circle to n sectors
n=8
tet=linspace(-pi,pi,n+1)
xi=r*cos(tet)+x0
yi=r*sin(tet)+y0
for k=1:numel(xi)
plot([x0 xi(k)],[y0 yi(k)])
hold on
end
  댓글 수: 16
a.t.
a.t. 2018년 5월 24일
The points should be equally spread across the area (=a sector of the circle)
Walter Roberson
Walter Roberson 2018년 5월 24일
Probably the easiest way to do equal spacing by area is to convert to Cartesian coordnates, and find grid points that are within the boundaries of the sector.

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

추가 답변 (1개)

Image Analyst
Image Analyst 2013년 10월 19일
  댓글 수: 2
Hassan
Hassan 2013년 10월 19일
how can i generate one random point in each part (each part contains only one point)
Image Analyst
Image Analyst 2013년 10월 19일
편집: Image Analyst 2013년 10월 19일
Like I said, use the FAQ. Just modify it to use the angles you want. Below is does it for a sector going between pi/4 and 3pi/4:
% Create a random set of coordinates in a circle.
% First define parameters that define the number of points and the circle.
n = 5000;
R = 20;
x0 = 50; % Center of the circle in the x direction.
y0 = 90; % Center of the circle in the y direction.
% Now create the set of points.
% For a full circle, use 0 and 2*pi.
%angle1 = 0;
%angle2 = 2*pi;
% For a sector, use partial angles.
angle1 = pi/4;
angle2 = 3*pi/4;
t = (angle2 - angle1) * rand(n,1) + angle1;
r = R*sqrt(rand(n,1));
x = x0 + r.*cos(t);
y = y0 + r.*sin(t);
% Now display our random set of points in a figure.
plot(x,y, '.', 'MarkerSize', 5)
axis square;
grid on;
% Enlarge figure to full screen.
set(gcf, 'units','normalized','outerposition',[0 0 1 1]);
fontSize = 30;
xlabel('X', 'FontSize', fontSize);
ylabel('Y', 'FontSize', fontSize);
title('Random Locations Within a Circle', 'FontSize', fontSize);
Just do this once for every sector you want to fill.

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

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by