次の関数はどのようにしてさまざまな言語で実装できますか?
次の入力値が与えられたとき、円の円周上の(x,y)
点を計算します。
x = cx + r * cos(a)
y = cy + r * sin(a)
ここで、rは半径、cx、cyは原点、(a角度。
基本的なtrig関数を使えば、どんな言語にも簡単に適応できます。 ほとんどの言語ではtrig関数の角度に ラジアン を使用するので、0..360度を巡回するのではなく、0..2PIを巡回します。ラジアン
これが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);
}
複素数 がある場合、だれがトリガを必要とします。
#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 ) );
}