Algoritmo per la costruzione degli angoli di un poligono regolare a n


10

Ho cercato su Google questo usando molte combinazioni di parole chiave, ma con mia grande sorpresa non sono riuscito a trovare un algoritmo per costruire un poligono regolare n-side in un dato cerchio, cioè trovare le coordinate per gli n angoli. Tutto quello che ho potuto trovare sono le istruzioni su come farlo tramite bussola fisica e straightedge o plug-in interattivi per browser senza sorgente.

Quindi dove posso trovare un tale algoritmo?


2
Vorrei ripristinare la tua fiducia in Google. ;-) Quarto hit per "algoritmo poligono regolare": gamedev.net/topic/… "Quindi, usando la trigonometria di base, ha scelto n punti distanziati equidistanti attorno alla circonferenza del cerchio (cioè - se n è 3, scegli 3 punti sul circonferenza di 120 gradi l'una dall'altra). " Questo è esattamente ciò che fa il codice di Kevin.
Eric,

Risposte:


15

Con il ipassaggio da 0 to n-1inclusivo:

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

Modifica: Come menzionato da Lars Viklund nei commenti, questo è sicuro solo in lingue come javascript in cui la divisione di interi restituisce un numero in virgola mobile anziché un intero. In altre lingue dovresti prima lanciare isu un float.


3
Fai attenzione alla trappola della divisione integrale in i / n nelle lingue in cui la divisione di numeri interi produce un numero intero.
Lars Viklund,

Aah un ottimo punto, aggiungerò quell'avvertimento nella risposta.
Elva,

Questo è ovvio, ma vorrai anche proteggerti dal caso in cui n * 2 * PI == 0o avrai un poligono infelice :(.
Zack The Human

Tranne strane straripate, l'unica n con n * 2 * PI == 0cui riesco a pensare è 0, che per quanto ne so non è definito, lo stesso di I / 0. Quindi nessun problema, giusto? :)
Elva,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.