2010-01-19 9 views
25

utilisant C#:trouver les coordonnées sur le bord d'un cercle

Comment puis-je obtenir le (x, y) les coordonnées sur le bord d'un cercle pour un degré donné, si je coordonnées du centre et le rayon ?

Il y a probablement NAS, TAN, COSIN et d'autres dixième année de mathématiques impliqués ... :)

+0

C'est le genre de question à poser sur http://mathoverflow.net/ – Lucero

+5

@Lucero: Non, je doute celui-ci compterait comme une « recherche Question mathématique de niveau " – Niki

+0

@nikie, c'est vrai, mais d'un autre côté c'est encore moins une question de programmation. C'est une géométrie simple. – Lucero

Répondre

73

Cela n'a rien à voir avec C#. Il y a juste quelques mathématiques élémentaires impliquées.

x = x0 + r * cos(theta) 
y = y0 + r * sin(theta) 

thêta est en radians, x0 et y0 sont les coordonnées du centre, r est le rayon et l'angle est mesuré dans le sens antihoraire à partir de l'axe x. Mais si vous voulez en C#, et votre angle est en degrés:

double x = x0 + r * Math.Cos(theta * Math.PI/180); 
double y = y0 + r * Math.Sin(theta * Math.PI/180); 
+0

+1, pour les votes rapides et faciles: P – AnthonyWJones

+1

C'est drôle sur ces types de questions comment presque identiques les réponses sont. Même jusqu'à la structure de la réponse: P –

+1

@ tm1rbrt - La conversion des degrés en radians est déjà dans mon code. –

3

Pour un cercle origine (j, k), rayon r et angle t en radians:

x(t) = r * cos(t) + j  
    y(t) = r * sin(t) + k 
8

utilisant théorème de Pythagore (où x1, y1 est le point de bord):

x1 = x + r cos (thêta)
y1 = y + r
sin (thêta)

en C#, cela ressemblerait à ceci:

x1 = x + radius * Math.Cos(angle * (Math.PI/180)); 
y1 = y + radius * Math.Sin(angle * (Math.PI/180)); 

où toutes les variables sont doubles et angle est en degrés