JComponentを使用してJavaでマンデルブロ集合の実装を作成しましたが、レンダリングすると奇妙な結果が得られます。それに加えて、すべてが正しくコンパイルされます。何が間違っているのかよくわかりません。コードレビューもいただければ幸いです。
ここではスペースを取りすぎるので、私のソースはペーストビンに投稿されています:
JComponentを使用してJavaでマンデルブロ集合の実装を作成しましたが、レンダリングすると奇妙な結果が得られます。それに加えて、すべてが正しくコンパイルされます。何が間違っているのかよくわかりません。コードレビューもいただければ幸いです。
ここではスペースを取りすぎるので、私のソースはペーストビンに投稿されています:
問題:
解決:
renderPoint
を受け入れるようにメソッドを変更し、より興味深いものを表示するように呼び出します。double
renderPoint((x - h)/100.0, (k - y)/100.0)
renderPoint
を変更することで、なんとかいいものを見ることができました。return (((r << 16) | (g << 8) | b)<<4)
MaxColorBit = 16
コードレビュー:
(int)Math.floor(Width / 2)
Width / 2
は整数除算であるため、 で置き換えることができます。Width
属性をHeight
小文字 (width
および) で始める必要がheight
あります。これは、クラスと属性を区別するのに役立つ Java 規則であるためです。iterations
属性は使用されません。フラクタルを正しく描いていますが、本当に小さいです。マンデルブロ セット全体が半径 2 の円に収まるので、400x500 ウィンドウの中央の数ピクセルをかろうじてカバーします。
(0,0)
スクリーン ウィンドウ ( からまで(width,height)
) から複素平面への何らかのマッピングを考案する-2-2i
必要があります2+2i
。x-h
簡単な修正は、 andk-y
式を100
に渡す前にで割り、renderPoint
の引数をrenderPoint
からint
に変更することdouble
です。目的の表示長方形を指定し、それを使用してマッピングを決定することをお勧めします。
GUI スレッドでフラクタル イメージを計算しています。ウィンドウが開き終わる前にアプリケーションがハングしたように見えるため、これは許されません。render()
コンストラクターでの呼び出しを次のように変更します。
new Thread() {
public void run() { render(); }
}.start();
Marvin を使用したマンデルブロ フラクタル レンダリングの例をご覧ください: http://marvinproject.sourceforge.net/en/plugins/mandelbrot.html
Julia セット レンダリング用のプラグインもあります: http://marvinproject.sourceforge.net/en/plugins/juliaSet.html