ミッドポイント サークル アルゴリズムを使用すると、各ピクセルに 1 回だけアクセスして、対称的な円を描くことができます。アルゴリズムの性質上、直径が奇数 (2 * r + 1) の円しか描画できません。このアルゴリズムを拡張して、ピクセル数が偶数の直径の円を正常に描画できるようにすることはできますか?
アルゴリズムの要件:
- ピクセルは 1 回だけ描画する必要があります。
- RAM は非常に高価です。
これを処理するために Midpoint circle アルゴリズムを実際に変更できない場合は、次の解決策で問題ありません。
void DrawCircle(int x, int y, int diameter)
{
if (diameter % 2 == 0)
EvenWidthCircle(x, y, diameter / 2);
else
MidpointCircle(x, y, diameter / 2);
}