Borrar filtros
Borrar filtros

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

20 visualizaciones (últimos 30 días)
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 comentario
Danielle Wojeski
Danielle Wojeski el 31 de Dic. de 2016
Editada: Walter Roberson el 31 de Dic. de 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

Iniciar sesión para comentar.

Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 7 de Mzo. de 2013
close
sides=5
degrees=2*pi/sides
theta=0:degrees:360-degrees
radius=ones(1,numel(theta))
polar(theta,radius)
  2 comentarios
gm76
gm76 el 7 de Mzo. de 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 el 7 de Mzo. de 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)

Iniciar sesión para comentar.

Más respuestas (1)

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

Iniciar sesión para comentar.

Categorías

Más información sobre Cartesian Coordinate System Conversion en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by