タイトルからわかるように、私はJavaでフラクタルを視覚化するための小さなプログラムをプログラミングするのに忙しいです。フラクタルを扱う人は誰でも、逃げるのにかかった反復回数だけピクセルに色を付けると、これらの愚かな「バンド」を取り除くための解決策を探すことになります。そこで、より高度なカラーリングアルゴリズムを検索して、「正規化された反復回数」を見つけました。私が使用している式は次のとおりです。
float loc = (float) 1 - Math.log(Math.log(c.abs())) / Math.log(2);
インターネット上の誰もがこのアルゴリズムにとても満足していて、誰もがそれを使用し、誰もが素晴らしい結果を得ることができます。私以外。このアルゴリズムは0と1の間のフロートを提供するはずだと思いましたが、それは起こりません。私はいくつかの計算を行い、このアルゴリズムはc.abs()> = Math.E && c.abs()<= Math.exp(2)(つまり、Math.E * Math.E)に対してのみ機能するという結論に達しました。 )。数字では、これは、この方程式への私の入力が約2.718から7.389の間でなければならないことを意味します。
ただし、複素数cは、その大きさが2より大きくなると、無限大になる傾向があると見なされます。ただし、Math.Eより小さい入力の場合、1より大きい値が得られます。また、Math.exp(2)より大きい数値の場合、負になります。これは、複素数が非常に速く脱出する場合に当てはまります。
だから私に教えてください:私は何が間違っているのですか?私は絶望的です。
ありがとう。
編集:
私は間違っていました:私が投稿したコードは正しいです、私はちょうど1.それを間違った方法で使用したので、それは正しい出力を提供しませんでした。2.マンデルブロ/ジュリアアルゴリズムのベイルアウト値を10に設定する必要がありました。そうしないと、再び愚かなバンドになってしまいます。
問題が解決しました!