How can I write a function that draws a regular polygon with n sides in a polar coordinate plot?
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
gm76
le 7 Mar 2013
Commenté : debashish panda
le 29 Août 2022
I am unfamiliar with plotting with polar coordinates. Here is what I have so far, which does not work:
function polygon(sides) % Name number of sides of the polygon
degrees=360/sides; % Find the angle between corners in degrees
radius=ones(1,sides) % Array of ones
theta=0:degrees:360 % Theta changes by the internal angle of the polygon
polar(theta, radius) % Plot
end
Thanks!
1 commentaire
Danielle Wojeski
le 31 Déc 2016
Modifié(e) : Walter Roberson
le 31 Déc 2016
%First you need to define the sides variable.
sides=input('input the number of sides you want;, ')
Then you need to make sure the radius and the theta match in size. If your theta starts at 0 it will always be one size bigger then your radius. So instead make it a 1.
It should look like this...
function polygon(sides) % Name number of sides of the polygon
sides = input('input the number of sides you want;, ');
degrees = 360./sides; % Find the angle between corners in degrees
r = ones(1,sides) % Array of ones
theta = 1:degrees:360 % Theta changes by the internal angle of the polygon
polar(theta, r) % Plot
end
Réponse acceptée
Azzi Abdelmalek
le 7 Mar 2013
close
sides=5
degrees=2*pi/sides
theta=0:degrees:360-degrees
radius=ones(1,numel(theta))
polar(theta,radius)
2 commentaires
Azzi Abdelmalek
le 7 Mar 2013
I can't for the moment explain this, It was an error, it should be
sides=9
degrees=2*pi/sides
theta=0:degrees:2*pi
radius=ones(1,numel(theta))
polar(theta,radius)
Plus de réponses (1)
Carson Cooper
le 13 Fév 2017
Modifié(e) : Carson Cooper
le 13 Fév 2017
This gives a better output than those above
function polygon(sides)
sides = input('input the number of sides you want;, ');
radians = (2*pi)./sides;
r = ones(1, sides);
theta = 1:radians:2*pi;
polar(theta, r)
end
4 commentaires
Anders Bray
le 11 Juil 2022
theta includes 0 as the first step making it an 1x(sides+1) that is why have to accomidate.
debashish panda
le 29 Août 2022
for n=3:1:6
subplot(2,2,n-2)
polygon(n)
end
function polygon(sides)
radians = (2*pi)./sides;
r = ones(1, sides+1);
theta = 0:radians:2*pi;
polar(theta, r)
end
Voir également
Catégories
En savoir plus sur Elementary Polygons 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!