2010-01-19 43 views
25

Utilizando C#:Encontrar las coordenadas en el borde de un círculo

¿Cómo consigo el (x, y) las coordenadas en el borde de un círculo para cualquier grado dado, si tengo las coordenadas del centro y el radio ?

Hay probablemente SIN, TAN, COSIN y otra el grado diez matemáticas involucradas ... :)

+0

Ese es el tipo de pregunta que hacer en http://mathoverflow.net/ – Lucero

+5

@Lucero: No, no creo que éste contaría como una "investigación pregunta matemática de nivel " – Niki

+0

@nikie, cierto, pero, por otro lado, es incluso menos una cuestión de programación. Es geometría simple. – Lucero

Respuesta

73

Esto no tiene nada que ver con C#. Solo hay algunas matemáticas elementales involucradas.

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

theta está en radianes, x0 y y0 son las coordenadas del centro, r es el radio, y el ángulo se mide en sentido antihorario desde el eje x. Pero si quieres que en C#, y su ángulo está en grados:

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

+1, para votos quicky-easy: P – AnthonyWJones

+1

Es gracioso en este tipo de preguntas cómo casi idénticas son las respuestas. Incluso hasta la estructura de la respuesta: P –

+1

@ tm1rbrt - La conversión de grados a radianes ya está en mi código. –

3

Para un círculo con origen (j, k), radio r, y el ángulo t en radianes:

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

usando Teorema de Pitágoras (donde x1, y1 es el punto de borde):

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

en C#, esto se vería así:

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

donde todas las variables son doublesangle y es en grados

Cuestiones relacionadas