2

JComponentを使用してJavaでマンデルブロ集合の実装を作成しましたが、レンダリングすると奇妙な結果が得られます。それに加えて、すべてが正しくコンパイルされます。何が間違っているのかよくわかりません。コードレビューもいただければ幸いです。

ここではスペースを取りすぎるので、私のソースはペーストビンに投稿されています:

JMandelbrot.java Mandelbrat.java

4

3 に答える 3

4

問題:

  • 画像はコードから期待どおりです。マンデルブロ集合の直径は 2 であるため、中央にいくつかのピクセルしか表示されません。

解決:

  • 引数renderPointを受け入れるようにメソッドを変更し、より興味深いものを表示するように呼び出します。doublerenderPoint((x - h)/100.0, (k - y)/100.0)
  • 内側のピクセルごとに 255^3 回の反復を計算しているため、反復回数と色分けを変更します。の戻り値と設定renderPointを変更することで、なんとかいいものを見ることができました。return (((r << 16) | (g << 8) | b)<<4)MaxColorBit = 16

コードレビュー:

  • (int)Math.floor(Width / 2)Width / 2は整数除算であるため、 で置き換えることができます。
  • Width属性をHeight小文字 (widthおよび) で始める必要がheightあります。これは、クラスと属性を区別するのに役立つ Java 規則であるためです。
  • iterations属性は使用されません。
于 2010-04-26T20:55:17.657 に答える
2
  • フラクタルを正しく描いていますが、本当に小さいです。マンデルブロ セット全体が半径 2 の円に収まるので、400x500 ウィンドウの中央の数ピクセルをかろうじてカバーします。

    (0,0)スクリーン ウィンドウ ( からまで(width,height)) から複素平面への何らかのマッピングを考案する-2-2i必要があります2+2ix-h簡単な修正は、 andk-y式を100に渡す前にで割り、renderPointの引数をrenderPointからintに変更することdoubleです。目的の表示長方形を指定し、それを使用してマッピングを決定することをお勧めします。

  • GUI スレッドでフラクタル イメージを計算しています。ウィンドウが開き終わる前にアプリケーションがハングしたように見えるため、これは許されません。render()コンストラクターでの呼び出しを次のように変更します。

    new Thread() {
      public void run() { render(); }
    }.start();
    
于 2010-04-26T20:50:23.380 に答える
0

Marvin を使用したマンデルブロ フラクタル レンダリングの例をご覧ください: http://marvinproject.sourceforge.net/en/plugins/mandelbrot.html

Julia セット レンダリング用のプラグインもあります: http://marvinproject.sourceforge.net/en/plugins/juliaSet.html

于 2011-04-19T00:10:53.513 に答える