Fractal eXtreme の著者と、ここの質問にリンクされている randomascii ブログ投稿。
Fractal eXtreme は、フラクタル イメージを徐々に改善するためにいくつかのことを行います。
- 上からではなく、真ん中から始めましょう。これは、多くの初期のフラクタル プログラムが無視した些細な変更です。中央は、ユーザーが最も気にかけている領域である必要があります。これは、中心線から開始するか、らせん状に展開することができます。スパイラル アウトはオーバーヘッドが大きいため、計算負荷の高い画像でのみ使用します。
- 8x8 ブロックで最初の低解像度パスを実行します (64 ピクセルから 1 ピクセルを計算)。これにより、粗い初期ビューが得られ、4x4、2x2、1x1 の解像度で徐々に洗練されます。各パスは、以前のすべてのパスの 3 倍のピクセルを処理することに注意してください。元のポイントを再計算しないでください。後続のパスも中心から開始します。これは、より重要だからです。
- マルチパス方式は推測に適しています。2 つの行の 4 つのピクセルが同じ値を持つ場合、その間のピクセルはおそらく同じ値を持つため、それらを計算しないでください。これは、一部の画像では非常にうまく機能します。最後に、誤って計算されたピクセルを探すためのクリーンアップ パスが必要であり、通常はいくつかのエラーが見つかりますが、クリーンアップ パスの後に目に見えるエラーを見たことはありません。これにより、10 倍以上のスピードアップが得られます。この機能は無効にすることができます。この機能の成功 (推測のパーセンテージ) は、ステータス ウィンドウで確認できます。
- ズームイン (ダブルクリックして倍率を 2 倍にする) する場合、以前に計算されたピクセルを開始点として使用できるため、ピクセルの 4 分の 3 のみを計算する必要があります。これは、必要な精度が高くなると機能しませんが、これらの不連続はまれです。
より洗練されたアルゴリズムは間違いなく可能です。たとえば、曲線追従。
速い計算をすることも役に立ちます。FX の高精度ルーチンは、64 ビットの乗算を使用する完全に展開されたアセンブリ言語 (C# コードによって生成される) です。
FX には、2 つの最大球根内のポイントのチェックもいくつかあり、それらをまったく計算しないようになっています。また、計算のサイクルも監視します。まったく同じポイントが表示された場合、計算が繰り返されます。
これを実際に見るには、http://www.cygnus-software.com/にアクセスしてください。