Comment la fonction suivante peut-elle être implémentée dans différentes langues?
Calculez le point (x,y)
sur la circonférence d'un cercle, à l'aide des valeurs d'entrée suivantes:
Le équation paramétrique pour un cercle est
x = cx + r * cos(a)
y = cy + r * sin(a)
Où r est le rayon, cx, cy l'origine et a l'angle.
C'est assez facile à adapter dans n'importe quelle langue avec des fonctions trigonométriques de base. Notez que la plupart des langues utiliseront radians pour l'angle dans les fonctions trigonométriques. Par conséquent, plutôt que de passer par 0..360 degrés, vous passez par 0..2PI radians
Voici mon implémentation 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 a besoin de trig quand vous avez nombres complexes :
#include <complex.h>
#include <math.h>
#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 ) );
}