マンデルブロのプログラミングは簡単です。
私の簡単なコードを以下に示します (バグがないことは保証されていませんが、概要としては適切です)。
概要は次のとおりです。マンデルブロー集合は、完全に半径 2 の円内にある複合グリッドにあります。
そのため、その長方形の領域内のすべてのポイントをスキャンすることから始めます。各点は複素数 (x + yi) を表します。その複素数を反復します。
[new value] = [old-value]^2 + [original-value]
次の 2 つのことを追跡します。
1.) 反復回数
2.) 原点からの [新しい値] の距離。
最大反復回数に達したら完了です。原点からの距離が 2 より大きい場合は、完了です。
完了したら、実行した反復回数に応じて元のピクセルに色を付けます。次に、次のピクセルに進みます。
public void MBrot()
{
float epsilon = 0.0001; // The step size across the X and Y axis
float x;
float y;
int maxIterations = 10; // increasing this will give you a more detailed fractal
int maxColors = 256; // Change as appropriate for your display.
Complex Z;
Complex C;
int iterations;
for(x=-2; x<=2; x+= epsilon)
{
for(y=-2; y<=2; y+= epsilon)
{
iterations = 0;
C = new Complex(x, y);
Z = new Complex(0,0);
while(Complex.Abs(Z) < 2 && iterations < maxIterations)
{
Z = Z*Z + C;
iterations++;
}
Screen.Plot(x,y, iterations % maxColors); //depending on the number of iterations, color a pixel.
}
}
}
省略された詳細は次のとおりです。
1.) 複素数の 2 乗とその計算方法を正確に学びます。
2.) (-2,2) 長方形領域を画面座標に変換する方法を見つけます。