Algorithme de construction des coins d'un polygone régulier à n côtés

10

J'ai googlé cela en utilisant beaucoup de combinaisons de mots clés, mais à ma grande surprise, je n'ai pas pu trouver d'algorithme pour construire un polygone régulier à n côtés dans un cercle donné, c'est-à-dire trouver les coordonnées des n points d'angle. Tout ce que j'ai pu trouver, ce sont des instructions sur la façon de le faire avec une boussole physique et une règle, ou des plug-ins de navigateur interactifs sans source.

Alors, où pourrais-je trouver un tel algorithme?

Hackworth
la source
2
Permettez-moi de restaurer votre confiance dans Google. ;-) Quatrième hit pour "polygone régulier d'algorithme": gamedev.net/topic/… "Ensuite, en utilisant la trigonométrie de base, choisissez n points espacés de manière équidistante autour de la circonférence du cercle (c'est-à-dire - si n est 3, choisissez 3 points sur le circonférence distante de 120 degrés) ". C'est exactement ce que fait le code de Kevin.
Eric

Réponses:

15

En ipassant de l' 0 to n-1inclus:

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

Edit: Comme Lars Viklund l'a mentionné dans les commentaires, cela n'est sûr que dans des langues comme javascript dans lesquelles la division entière renvoie un nombre à virgule flottante plutôt qu'un entier. Dans d'autres langues, vous devez d'abord lancer iun flotteur.

Elva
la source
3
Méfiez-vous du piège de la division intégrale en i / n dans les langues où la division d'entiers donne un entier.
Lars Viklund
Aah un très bon point, je vais ajouter cette mise en garde dans la réponse.
Elva
Cela va sans dire, mais vous voudrez également vous prémunir contre le cas où n * 2 * PI == 0ou vous aurez un polygone malheureux :(.
Zack The Human
À moins de débordements étranges, le seul n avec n * 2 * PI == 0lequel je puisse penser est 0, ce qui, pour autant que je sache, n'est pas défini, comme i / 0. Donc, pas de problème, non? :)
Elva