2010-01-19 7 views
25

Verwendung von C#:Finden der Koordinaten auf der Kante eines Kreises

Wie erhalte ich die (x, y) Koordinaten auf der Kante eines Kreises für einen bestimmten Grad, wenn ich die Mittelpunktkoordinaten und der Radius ?

Es ist wahrscheinlich SIN, TAN, COSIN und andere Klasse zehn Mathematik beteiligt ... :)

+0

Das ist die Art von Frage ist zu fragen, auf http://mathoverflow.net/ – Lucero

+5

@Lucero: Nein, ich bezweifle, dass dies ein als „Forschung zählen würde Level Mathematik Frage " – Niki

+0

@nikie, wahr, aber auf der anderen Seite ist es noch weniger eine Programmierfrage. Es ist einfache Geometrie. – Lucero

Antwort

73

Das hat nichts mit C# zu tun. Es gibt nur elementare Mathematik.

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

Theta in Radian, X0 und Y0 sind die Koordinaten des Zentrums, ist r der Radius, und der Winkel wird entgegen dem Uhrzeigersinn von der x-Achse gemessen. Aber wenn Sie es in C# mögen, und Ihr Winkel in Grad:

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

+1, für speedy-easy-Stimmen: P – AnthonyWJones

+1

Es ist lustig auf diese Art von Fragen, wie fast identisch die Antworten sind. Sogar bis auf die Struktur der Antwort: P –

+1

@ tm1rbt - Die Umwandlung von Grad in Radiant ist bereits in meinem Code. –

3

Für einen Kreis mit Ursprung (j, k), Radius r und Winkel t in Radian:

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

Verwendung Satz von Pythagoras (wobei x1, y1 ist der Kantenpunkt):

x1 = x + r cos (theta)
y1 = y + r
sin (theta)

in C#, würde dies wie folgt aussehen:

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

wo alle Variablen doubles und angle ist in Grad