Vertices of regular n-gon.
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Jim Oste
el 13 de Feb. de 2015
Respondida: Steven Lord
el 8 de Nov. de 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.
0 comentarios
Respuesta aceptada
John D'Errico
el 13 de Feb. de 2015
Editada: John D'Errico
el 13 de Feb. de 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 comentarios
nanying
el 7 de Nov. de 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
el 7 de Nov. de 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.
Más respuestas (1)
Ver también
Categorías
Más información sobre Elementary Polygons en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!