Come faccio a calcolare un punto sulla circonferenza di un cerchio?

Come può essere implementata la seguente funzione in varie lingue?

Calcola il punto (x,y) sulla circonferenza di un cerchio, dati i valori di input di:

  • Raggio
  • Angolo
  • Origine (parametro facoltativo, se supportato dalla lingua)

L’ equazione parametrica per un cerchio è

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

Dove r è il raggio, cx, cy l’origine e un angolo.

È abbastanza facile adattarsi a qualsiasi linguaggio con funzioni trigonometriche di base. Nota che la maggior parte delle lingue userà i radianti per l’angolo nelle funzioni trigonometriche, quindi piuttosto che andare in bicicletta a 0,360 gradi, stai pedalando attraverso i radianti da 0..2PI.

Ecco la mia implementazione in 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); } 

Chi ha bisogno di trigsi quando hai numeri complessi :

 #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 ) ); }