web-dev-qa-db-fra.com

Comment calculer un point sur la circonférence d’un cercle?

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:

  • Rayon
  • Angle
  • Origine (paramètre facultatif, si pris en charge par la langue)
210
Justin Ethier

Le équation paramétrique pour un cercle est

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

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

557
Paul Dixon

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);
    }
46
Justin Ethier

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 ) );
}
16
Pete Kirkham