4

よく知られている中点円アルゴリズム(ウィキペディア)は、与えられた半径の円のピクセル座標のx、y座標を提供します。

使用する計算は反復的であり、各反復で条件を使用してループを終了します。while (y > x) etc...

私が持っている質問は、半径が与えられた場合、アルゴリズムによって返されるポイントの総数を事前に予測する方法です。

私の数学的背景は限られており、それを導き出すことはできませんでした。私はそれをグーグルで検索しました、そして私が見つけた唯一のものは次のとおりです:http ://www.gdunge.com/2011/03/23/a-different-kind-of-pi 。round(sqrt(2) * radius)このページの作者であるダグは、4分の1の円で機能することを実験して見つけたと述べています。円全体を取得しようとして実験しましたが、いくつかの点を見逃しています。

この数の背後にある実質的な法則は何ですか?

4

3 に答える 3

7

私はあなたの式を基礎として取り、これを得ました:

floor((sqrt(2)*(radius-1)+4)/2)*8

そして、それはうまく機能しています。

于 2013-02-21T05:49:18.693 に答える
1

半径r の円を描画するときに中点円アルゴリズムによって描画される * ピクセルの数は、  4 round     (sqrt(2) r ) または     4 floor(sqrt(2) r + 1/2) です。


*中点円アルゴリズムの多くの実装では、多数のピクセルが複数回描画されます。     重複の実際の数は、半径と特定の実装
    の詳細によって異なります。     特に、元の投稿で引用されているアルゴリズムの C# 実装によって、重複を含め
て描画されるピクセルの数は、         8 floor((sqrt(2)/2) r + 3/4) + 4 です。

于 2015-02-09T02:45:01.080 に答える
1

参照しているウィキペディアのページの図を見ると、最初のオクタントでは、すべてのピクセルが前のピクセルより 1 単位上にあり、前のピクセルより 1 ピクセル下にあることがわかります。アルゴリズムを一目見れば、これは、この位置にある八分円の場合に常に当てはまります。

したがって、円の最初の八分円を描画するために必要なピクセル数は、最初の八分円で上に移動するピクセル数です。半径が r の場合、最初の八分円で上に移動する距離は r sin 45 度、つまり r / sqrt(2) です。45 度では、2 辺の長さが 1 の直角三角形と斜辺があります。長さ sqrt(2) の

八分円が r / sqrt(2) の場合、円の 4 分の 1 (2 つの八分円) は r * sqrt(2) になります。

于 2011-11-20T12:36:45.040 に答える