2017-09-12 12 views
0

私はゲームに取り組んでおり、線のみを使って円の輪郭を作成する方法を考えています。C++複数の行を使って円の輪郭を作成する

だから私は、これは2Dは2D座標最後に座標最初から線を引きますので

void drawLine2D(float starX, float startY, float endX, float endY); 

のようなグラフィックス機能を持っています。

ですから、例えば、私はこの

drawLine2D(0, 0, 10, 10); 

ラインは私が考えていたので、Vector2D(10, 10)

Vector2D(0, 0)から引き出されるだろうと私はそれを作成することが可能である知っているような関数を呼び出すことだった場合複数の線を使って円の輪郭を描くので、円のように見えます。私は数学に何か問題があります。これは私が私のサークルのアウトライン機能が

void drawCricleOutline(float circleCenterPointX, float circleCenterPointY, int circleSize) 
{ 
    //circleSize will scale how big the circle will be 
    for(int i = 0; i < circleSize; i++) 
    { 
     drawLine2D(magicValueX1, magicValueY1, magicValueX2, magicValueY2) 
    } 
} 

これは私が困惑して取得しています一部であるように、円の輪郭を描画するために必要な三角法...任意の助けをいただければ幸い感謝を見て想像する方法です。

+1

あなたの擬似コードに基づいてちょうどノート、それは 'circleSize'はなりません「円がものになるかどうかは大きなスケール」のように見えますが、代わりに数を決定します円を描画するために使用される線分の数。 – 0x5453

+0

@ 0x5453サークルを大きくするには、サークルを適切/滑らかな曲線に見せるために、より多くの線分が必要です。しかし、はい、私はあなたのポイントを見て、それは人々に私がしようとしているものの良いアイデアを与える例に過ぎませんでした。 – thehaxdev

答えて

0

円を描く主な方法は2つあります。 1つはnステップでx = r * cos(angle)およびx = r * sin(angle)を0~360度(または0~2πラジアン)にわたって使用することによってそれを近似することである。もう1つ(そしてより一般的に行われる方法)は、円の式を使用して、x^2 + y^2 = r^2を使用して、ピクセルを一方の側から他方の側に描画します。 y = sqrt(r^2 - x^2)は円の上半分を描画し、その値を無効にして下半分を描画するのは簡単です。さらに洗練されたことは、2つの四半期がお互いの鏡であることに注意することです。したがって、単一の四分円を簡単に計算してから値を否定することができます。 PHIの正弦と余弦の

1

一つの可能​​な定義は、Y及びX角度PHIと単位円の円弧の終点で、それぞれ座標です。あなたはこの探している言い換えれば、:

pointOnCircle.x = cos(angle) * radius + centre.x; 
pointOnCircle.y = sin(angle) * radius + centre.y; 
関連する問題