How can I write a function that draws a regular polygon with n sides in a polar coordinate plot?

19 Ansichten (letzte 30 Tage)
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 Kommentar
Danielle Wojeski
Danielle Wojeski am 31 Dez. 2016
Bearbeitet: Walter Roberson am 31 Dez. 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

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 7 Mär. 2013
close
sides=5
degrees=2*pi/sides
theta=0:degrees:360-degrees
radius=ones(1,numel(theta))
polar(theta,radius)
  2 Kommentare
gm76
gm76 am 7 Mär. 2013
Thanks so much, this works! Why is it that degrees seems to be defined in radians, (2*pi/sides) but is then subtracted from 360?
Azzi Abdelmalek
Azzi Abdelmalek am 7 Mär. 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)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Carson Cooper
Carson Cooper am 13 Feb. 2017
Bearbeitet: Carson Cooper am 13 Feb. 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 Kommentare
Anders Bray
Anders Bray am 11 Jul. 2022
theta includes 0 as the first step making it an 1x(sides+1) that is why have to accomidate.
debashish panda
debashish panda am 29 Aug. 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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Elementary Polygons finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by