¿Obtener la posición del punto en la circunferencia del círculo, dado un ángulo?


13

Me gustaría saber cómo obtener un punto específico en la circunferencia de un círculo, dado un ángulo. El diámetro del círculo es 1, y el punto central del círculo es { X: 0.5, Y: 0.5 }.

Respuestas:


23

Puede resolver esto usando trigonometría básica. http://www.freehomeworkmathhelp.com/Trigonometry/Trigonometry_Introduction/trigonometry.html

Tan(angle) = Opposite / Adjacent
Sin(angle) = Opposite / Hypotenuse
Cos(angle) = Adjacent / Hypotenuse

Siempre recuerdo lo anterior como

The Old Arab
Sat On His
Camel And Howled

Lo anterior significa que si tenemos el ángulo y una longitud de un triángulo rectángulo, podemos calcular las longitudes de los otros lados. Afortunadamente, su problema puede considerarse como el cálculo de la longitud de los lados del triángulo:

Círculo Imagen Triángulo

Arriba, r es la hipotenusa, x es adyacente e y es lo opuesto.

Entonces para x:

Cos(a) = x / r
Cos(a) * r = x
x = Cos(a) * r

Y para y:

Sin(a) = y / r
Sin(a) * r = y
y = Sin(a) * r

Esto supone un círculo en (0, 0), por lo que solo agregamos el centro del círculo.

radius = 1;
CenterX = 0.5;
CenterY = 0.5;

x = Cos(angle) * radius + CenterX;
Y = Sin(angle) * radius + CenterY;

Nota: Las funciones matemáticas de C # usan ángulos en radianes, por lo que si tiene grados conviértalos primero:

radians = degrees * Math.PI / 180

1
Tenga en cuenta que el ángulo debe estar en radianes.
bummzack

Depende de la biblioteca matemática, pero buen punto, XNA / .Net usa radianes.
George Duckett

¿Por qué el viejo árabe iba a aullar? Aquí estamos no todos los hablantes de inglés por lo que una regla Memonic conceptual es mucho mejor que una frase mnemotécnica
FXIII

1
@FxIII: Es cierto, no es la memonía más popular, sin embargo, siempre me ha resultado fácil recordarla que SOHCAHTOA, ya que es inusual.
George Duckett

O simplemente puede buscarlo, una vez que esté familiarizado con el concepto, una o dos veces al año que lo necesite.
Tetrad
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.