タイトルからわかるように、私はJavaでフラクタルを視覚化するための小さなプログラムをプログラミングしています。フラクタルを扱う人は誰でも、逃げ出すために必要な反復回数でピクセルを色付けするだけで、このような愚かな「バンド」を取り除くソリューションを探し求めます。 そこで、より高度なカラーリングアルゴリズムを探して、「正規化された繰り返し回数」を見つけました。私が使用している式は次のとおりです。インターネット上の正規化反復回数が機能しません。私は間違って何をしていますか?
float loc = (float) 1 - Math.log(Math.log(c.abs()))/Math.log(2);
誰もが誰もがそれを使用して、everbodyは素晴らしい結果を取得し、このアルゴリズムについてとても幸せです。私を除いて。私は思った、このアルゴリズムは0と1の間のフロートを提供する必要があります。しかし、それは起こりません。私はいくつかの計算を行い、結論に達しました。このアルゴリズムはc.abs()> = Math.Eの場合にのみ有効です。& & c.abs()< = Math.exp(2)(これはMath.E * E)。 これは、この方程式への私の入力が約2.718と7.389の間でなければならないことを意味します。
しかし、複素数cは、その大きさが2より大きい場合、無限大に向かうことが検討されます。しかし、Math.Eより小さい任意の入力に対しては、1より大きい値が得られます。そして、Math.exp(2)より大きい任意の数の場合、負になります。複雑な数値が本当に速くエスケープする場合はそうです。
だから私に教えてください:私は間違って何をしています。私は絶望的です。
ありがとうございました。
EDIT:
私が間違っていた:私は投稿コードが正しい、私はちょうど 1.それを間違った方法を使用し、それは右の出力を提供していませんでした。 2. mandelbrot/juliaアルゴリズムの救済額を10に設定する必要がありました。そうしないと、愚かなバンドが再び発生します。
問題が解決しました。
あなたはJavaで何かをやっているが、あなたは救済値が2ではなく、10 –
にタグを付けていなかった、平滑実装するときは、2よりもはるかに大きな値に救済を増やす必要があります実際には10を超えています(OPがこれまでにこれを発見した可能性があります)。なぜ私は答えとして説明しなければならないと思います。 – karatedog
@karatedogする必要がありますするには、Java – sh1