Vertices of regular n-gon.

13 visualizzazioni (ultimi 30 giorni)
Jim Oste
Jim Oste il 13 Feb 2015
Risposto: Steven Lord il 8 Nov 2017
I want to find the perimeter of a regular inscribed polygon given N sides. I have a function that will calculate the distance from a set of coordinates. I have the following code to find the coordinates of the vertices for a regular n-gon;
x = cos(n.*(2*pi)./N);
y = sin(n.*(2*pi)./N);
I just don't know to store individual coordinates to pass through my function to find the distance between each vertex.

Risposta accettata

John D'Errico
John D'Errico il 13 Feb 2015
Modificato: John D'Errico il 13 Feb 2015
Do it vectorized. Learn to use vectors.
t = linspace(0,1,N);
You can view t as the ratio n/N here, stored as a vector.
x = cos(t.*2*pi);
y = sin(t.*2*pi);
d = sum(sqrt(diff(x).^2 + diff(y).^2));
So, for N = 10, this yields
d =
6.15636257986204
Not too far from 2*pi. Increase N to 1000,
d =
6.28317495105715
2*pi
ans =
6.28318530717959
You can see it does well enough. It should approach 2*pi asymptotically from below as N goes to infinity.
  2 Commenti
nanying
nanying il 7 Nov 2017
Just want to mention that d = sum(sqrt(diff(x).^2 + diff(y).^2)) only sum N-1*terms which is 9 in your case.
John D'Errico
John D'Errico il 7 Nov 2017
@nanying - what is your point? The first and last vertices in the polygon as created are the same. So if you wanted to point out that to create a true N-gon, thus a regular polygon with N sides, you actually needed to use N+1 in the code above, that would have been a valid comment. The perimeter length of the polygon is correct though.

Accedi per commentare.

Più risposte (1)

Steven Lord
Steven Lord il 8 Nov 2017
If you're using release R2017b or later, you can use the nsidedpoly function.

Categorie

Scopri di più su Elementary Polygons in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by