web-dev-qa-db-ja.com

円周上の点を計算する方法

次の関数はどのようにしてさまざまな言語で実装できますか?

次の入力値が与えられたとき、円の円周上の(x,y)点を計算します。

  • 半径
  • 角度
  • 原点(言語でサポートされている場合はオプションのパラメータ)
205
Justin Ethier

円に対するパラメトリック方程式 は、

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

ここで、rは半径、cx、cyは原点、(a角度。

基本的なtrig関数を使えば、どんな言語にも簡単に適応できます。 ほとんどの言語ではtrig関数の角度に ラジアン を使用するので、0..360度を巡回するのではなく、0..2PIを巡回します。ラジアン

545
Paul Dixon

これが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);
    }
45
Justin Ethier

複素数 がある場合、だれがトリガを必要とします。

#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