Effacer les filtres
Effacer les filtres

How to create a circle filled with equidistant points inside it?

35 vues (au cours des 30 derniers jours)
Rushil Asthana
Rushil Asthana le 6 Oct 2021
Commenté : Chunru le 7 Oct 2021
I want to create circle filled with equidistant points inside it. I have tried making the following program but it's taking too long to give output
radius = 100;
xc = 1;
yc = xc+1;
jc= 1;
jy=jc+1;
area = pi*radius*radius;
for i=xc:yc:area
theta = i*(2*pi);
r = sqrt(area)*radius;
for j=jc:jy:i
x = xc + r.*cos(theta);
y = yc + r.*sin(theta);
end
plot(x,y,'.')
end
  5 commentaires
Stephen23
Stephen23 le 6 Oct 2021
Modifié(e) : Stephen23 le 6 Oct 2021
@Rushil Asthana: because you did not mention anything about an optimal solution or any specific boundary requirements then this task is trivially easy: first generate a square grid of points large enough to cover the required circle, then simply discard those outside the circle. Reasonably efficient and should take only a few lines of code.
That will provide you with exactly what you asked for: points with exactly equal spacing all within a circle.
Rushil Asthana
Rushil Asthana le 6 Oct 2021
@John D'Errico What will the code look like essentially? Cause I need help with exactly what you mentioned.

Connectez-vous pour commenter.

Réponse acceptée

Chunru
Chunru le 7 Oct 2021
Modifié(e) : Chunru le 7 Oct 2021
Here is a sub-optimal (or almost optimal) solution. Filled dots will form the hexagonal formation.
radius = 10;
d = 1; % distance
xall=[]; yall=[];
dy = sqrt(3)/2 * d;
ny = floor(radius/dy);
for i=-ny:ny
y = dy*i;
if rem(i, 2)==0
nx = floor((sqrt(radius^2 - y^2))/d);
x = (-nx:nx)'*d;
else
nx = floor((sqrt(radius^2 - y^2)-d/2)/d);
x = (-nx-0.5:nx+0.5)'*d;
end
xall = [xall; x];
yall = [yall; y*ones(size(x))];
end
plot(xall(:), yall(:), '.');
hold on
theta = 0:360;
plot(radius*cosd(theta), radius*sind(theta), 'r')
axis equal
  3 commentaires
Image Analyst
Image Analyst le 7 Oct 2021
@Rushil Asthana, then could you please click the "Accept this answer" link to grant @Chunru the reputation points he deserves for helping you. Thanks in advance. 🙂
Chunru
Chunru le 7 Oct 2021
@Image Analyst Thanks for cultivating the good community culture. :-)

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Colormaps dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by