¿Cómo calculo un punto en la circunferencia de un círculo?

¿Cómo se puede implementar la siguiente función en varios idiomas?

Calcule el punto (x,y) en la circunferencia de un círculo, dados los valores de entrada de:

  • Radio
  • Ángulo
  • Origen (parámetro opcional, si es compatible con el idioma)

La ecuación paramétrica para un círculo es

 x = cx + r * cos(a) y = cy + r * sin(a) 

Donde r es el radio, cx, cy el origen y a el ángulo.

Es bastante fácil de adaptar a cualquier idioma con funciones trigonométricas básicas. Tenga en cuenta que la mayoría de los lenguajes usarán radianes para el ángulo en las funciones trigonométricas, por lo que en vez de ciclar a través de 0..360 grados, está ciclando a través de 0..2PI radianes.

Aquí está mi implementación en C #:

  public static PointF PointOnCircle(float radius, float angleInDegrees, PointF origin) { // Convert from degrees to radians via multiplication by PI/180 float x = (float)(radius * Math.Cos(angleInDegrees * Math.PI / 180F)) + origin.X; float y = (float)(radius * Math.Sin(angleInDegrees * Math.PI / 180F)) + origin.Y; return new PointF(x, y); } 

¿Quién necesita trigonometría cuando tienes números complejos ?

 #include  #include  #define PI 3.14159265358979323846 typedef complex double Point; Point point_on_circle ( double radius, double angle_in_degrees, Point centre ) { return centre + radius * cexp ( PI * I * ( angle_in_degrees / 180.0 ) ); }