Le calcul de la position des points dans un cercle
Je vais avoir un peu de blanc d'esprit sur le moment.
J'ai un problème lorsque j'ai besoin de calculer la position des points autour d'un point central, en supposant qu'ils sont tous à égale distance du centre et de chaque autre.
Le nombre de points est variable, il est donc DrawCirclePoints(int x)
Je suis sûr qu'il ya une solution simple, mais pour la vie de moi, je ne peux pas le voir 🙂
- Tout le monde a donné beaucoup de réponses, crazy quick, donc j'ai donné la tique à la première réponse 🙂 Ils sont tous des grands 🙂
Vous devez vous connecter pour publier un commentaire.
Un point à l'angle thêta sur le cercle dont le centre est
(x0,y0)
et dont le rayon estr
est(x0 + r cos theta, y0 + r sin theta)
. Maintenant, choisisseztheta
valeurs régulièrement espacées entre 0 et 2pi.Donné un rayon de longueur r et un angle t en radians et un cercle de centre (h,k), vous pouvez calculer les coordonnées d'un point sur la circonférence de la façon suivante (c'est un pseudo-code, vous devrez vous adapter à votre langue):
Voici une solution à l'aide de C#:
Exemple de sortie de
DrawCirclePoints(8, 10, new Point(0,0));
:Bonne chance!
À l'aide de l'une des réponses ci-dessus, comme une base, ici, est la Java/Android exemple:
J'ai dû le faire sur le web, voici donc un coffeescript version de @scottyab de l' réponse ci-dessus:
Solution PHP:
$newx
et$newy
, en mettant les coordonnées moyen à l'extérieur du rayon du cercle. Essayez$newx = (int)($center->getX() + ($radius * cos($angle)));
et similaires pour$newy
.Pour le bien de l'achèvement, ce que vous décrivez comme "la position des points autour d'un point central(en supposant qu'ils sont tous équidistants du centre)" n'est rien mais "Coordonnées Polaires". Et vous demandent de façon à La conversion entre les coordonnées Cartésiennes et polaires qui est donné comme
x = r*cos(t)
,y = r*sin(t)
.L'angle entre chacun de vos points va être
2Pi/x
donc on peut dire que pour les pointsn= 0 to x-1
l'angle entre un point 0 est2nPi/x
.En supposant que votre premier point est à
(r,0)
(où r est la distance à partir du centre), puis les positions par rapport au point central sera:Solution de travail en Java:
Voici un
R
version basée sur le @Pirijan réponse ci-dessus.Basée sur la réponse ci-dessus à partir de Daniel, voici mon point de vue à l'aide de Python3.
Placer un nombre sur une trajectoire circulaire