Algoritmo para construir las esquinas de un polígono regular de n lados

10

Lo busqué en Google usando muchas combinaciones de palabras clave, pero para mi gran sorpresa, no pude encontrar un algoritmo para construir un polígono regular de n lados en un círculo dado, es decir, encontrar las coordenadas para los n puntos de esquina. Todo lo que pude encontrar fueron instrucciones de cómo hacerlo mediante brújula física y regla, o complementos de navegador interactivos sin fuente.

Entonces, ¿dónde podría encontrar tal algoritmo?

Hackworth
fuente
2
Déjame restaurar tu fe en Google. ;-) Cuarto golpe para "algoritmo polígono regular": gamedev.net/topic/… "Luego, usando trigonometría básica, elija n puntos espaciados equidistantemente alrededor de la circunferencia del círculo (es decir, si n es 3, elija 3 puntos en el circunferencia que están separadas 120 grados entre sí ". Que es exactamente lo que hace el código de Kevin.
Eric

Respuestas:

15

Con iir de 0 to n-1inclusivo:

pointX[i] = ( sin( i / n * 2 * PI ) * radius ) + xOffset;
pointY[i] = ( cos( i / n * 2 * PI ) * radius ) + yOffset;

Editar: como mencionó Lars Viklund en los comentarios, esto solo es seguro en idiomas como javascript en el que la división de enteros devuelve un número de coma flotante en lugar de un entero. En otros idiomas, primero debe lanzar ia un flotador.

Elva
fuente
3
Tenga cuidado con la trampa de la división integral en i / n en los idiomas donde dividir enteros produce un entero.
Lars Viklund
Ah, un muy buen punto, agregaré esa advertencia en la respuesta.
Elva
Esto es evidente, pero también querrá protegerse contra el caso en el n * 2 * PI == 0que tendrá un polígono infeliz :(.
Zack The Human
Salvo desbordamientos extraños, la única n con la n * 2 * PI == 0que puedo pensar es 0, que, hasta donde sé, no está definida, igual que i / 0. Entonces, ¿no hay problema, verdad? :)
Elva