Frage

Wie kann die folgende Funktion in verschiedenen Sprachen implementiert werden?

Berechnen Sie den (x,y) Punkt auf dem Umfang eines Kreises, da Eingabewerte:

  • Radius
  • Winkel
  • Herkunft (optionale Parameter, wenn sie von der Sprache unterstützt)
War es hilfreich?

Lösung

Die parametrische Gleichung für einen Kreis ist

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

Wo r ist der Radius, cx, cy der Ursprung, und a der Winkel.

Das ist ziemlich einfach, in jede Sprache mit grundlegenden trigonometrischen Funktionen anzupassen. Beachten Sie, dass die meisten Sprachen verwenden Radiant für den Winkel in trigonometrischen Funktionen, also eher als Radfahren durch 0..360 Grad, Sie Radfahren durch 0..2PI Radiant.

Andere Tipps

Hier ist meine Implementierung 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);
    }

Wer braucht trig wenn Sie komplexe Zahlen :

#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 ) );
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top