Mandelbrot集合

JDK1.1-Source

JDK1.02

 こちらのほうは何とかJDK1.1バージョンが完成したんですが、Mandel Finderのほうは、もうはまりにはまってにっちもさっちもいきません。まったく完成には程遠い状態です(笑)。

1998.9.2




 Javaボタン+Java Applet Windowを復活させたのですが、やはりFreeBSD版のCommunicator4.05では動きませんでした、ガクッ。

1998.8.19




アプレット ソース 表示範囲(X:実数部 Y:虚数部)
 mandel0   mandel0.java  X:−1.500〜+0.500
Y:−1.000〜+1.000
 mandel1   mandel1.java  X:+0.250〜+0.750
Y:−0.250〜+0.250
 mandel2   mandel2.java  X:+0.175〜+0.425
Y:+0.465〜+0.715
 mandel3   mandel3.java  X:−0.390〜+0.110
Y:+0.630〜+1.030
 mandel4   mandel4.java  X:−0.640〜−0.440
Y:+0.510〜+0.710
 mandel5   mandel5.java  X:−1.100〜−0.600
Y:−0.050〜+0.450
 mandel6   mandel6.java  X:−1.325〜−1.075
Y:+0.195〜+0.445
 mandel7   mandel7.java  X:−1.525〜−1.275
Y:−0.125〜+0.125
 mandel8   mandel8.java  X:−2.009〜−0.711
Y:−0.649〜+0.649



 FreeBSD+twm+Communicator4.05の組み合わせだと表示されないのでシンプルにHTMLファイル上で動作させるようにしました。

 一応動きますが、FreeBSD版Communicatorでは遅すぎて話になりません。

 なお、以前のバージョンはこちらです。

1998.8.5




 ソースファイルを公開して欲しいとの要望がありましたので公開しておきます。

M_0.java Mandel_0.java Mandel_1.java Mandel_2.java Mandel_3.java Mandel_4.java Mandel_5.java Mandel_6.java Mandel_7.java Mandel_8.java

 なお、コンパイルする場合は、以上のファイルを同じディレクトリにおいて、M_0.javaだけコンパイルすれば他のファイルもJDKのコンパイラjavacが勝手にコンパイルしてくれます。

1998.7.24




 やりました、JDKのデモプログラムArc Testのおかげでキャンバス・クラスの使い方が分かりました。どうやら今までJDK1.1とJDK1.02の知識がごっちゃになっていたようで、余分な項目を加えていて上手くいかなかったみたいです。

 それから、show();の位置を変更してIE3.02でも指定したサイズのウインドウで表示されるようにしたところ、今度はNavigator4.04でも閉じられるようになりました。これで、細かな不具合はありますが、自分のPCに入っているNavigator4.04・Navigator3.0・IE3.02・HotJava1.1のすべてブラウザで動作するようになりました。

 これでいよいよ次なる段階のMandel Finderを作れる可能性がでてきました。たぶんArc Testのまねをすればできると思うんですが、いつ完成するかわかりませんが請うご期待を、と、そんなの誰も期待していなかったりして(笑)。

1998.1.29




 ようやくJDKのデモプログラムのおかげで閉じるボタン無しでウインドウ自身のボタンで閉じるやり方がわかりました。ウインドウを閉じるイベントは下のようにしてみました。

public boolean handleEvent ( Event e ) {
 if ( e.id == Event.WINDOW_DESTROY ) {
  dispose() ;
 }
 return true ;
}

 それから、描画のスピードが遅くなって画面がずれて表示できない文字も出ますが、一応HotJava Browser1.1でも動作します。画面がずれるのはフレームに直接描画しているのが原因で、キャンバス・クラスを使えば直せると思うんですが、自分の持っているJavaの入門書にはキャンバスにGif画像を貼り付ける方法は載っているのですが、描画する方法は詳しく載っていないので今のところよくわからない状態です。また、HotJavaはTABLEタグが上手く表示できないみたいで(自分が文法間違いを犯している可能性もありますが)、TABLE内にAppletを表示するやり方はやめました。

 あと、上のボタンのアプレットが表示された時点で回線を切っても画像は表示されます。

1998.1.28




 ボタンのアプレットを一つにまとめました。これで画面がすっきりした。それから、別々にコンパイルしたクラス同士でリンクできることに気づきました。しかしIE3.02はだめですねえ。表示される文字を白に指定したのに黒いままだし、「−」や「〜」が表示できないし。もういいや、もはやIE3.02なんか誰も使っていないでしょう。どうせIE派はIE4を使っていることでしょう(勝手な決めつけ)。

1998.1.22




 なんじゃそりゃ?

public void init() {
 add ( "South" , new Button ( "閉じる" ) ) ;
 Dimension d = getToolkit() . getScreenSize() ;
 resize ( 410 , 473 ) ;
 show() ;
}

これだとNavigator4.04で正常にウインドウが表示されて閉じるボタンで閉じられるんですが、IE3.02だと指定したサイズ(410x473ピクセル)にウインドウが表示されなくなります。

public void init() {
 add ( "South" , new Button ( "閉じる" ) ) ;
 show() ;
 Dimension d = getToolkit() . getScreenSize() ;
 resize ( 410 , 473 ) ;
}

これだとIE3.02で指定したサイズで表示されるんですが、今度はNavigator4.04で閉じられなくなっちゃう。たかがshow() ; の位置の違いだけなのにぃ。さあどちらのブラウザがタコなんでしょうか?それともJavaがタコなのか?それともこのプログラムを作った私自身がタコなのか?とりあえずIE3.02では異常に描画が遅いし、なぜか二度も描画が繰り返されるのでNavigatorを優先させたプログラムにしています。

1998.1.21




 ちょっとカッコ悪いですが生成されるウインドウに閉じるボタンをつけました。JDK1.1に完全対応させるとウインドウ自身のボタンで閉じることができるのですが、今度はNavigator4.04で表示できなくなっちゃいます。Netscape!早いとこJava完全対応ブラウザを出せ!このままだとマイクロソフトの軍門に下っちゃうぞ!

1998.1.18




 やっとループ計算方法が分かりました。プログラムも400行から60行へいっきに減りました。計算回数も50回から255回に増やしたので画像が鮮明になりました。重ね塗りもなくなったので描画スピードも心持ち速くなった感じです。

1998.1.8




 画面のサイズが800x600だとはみ出た部分が表示されないことに気づいたので新しいウインドウを生成するようにしました。

 上のボタンを押すとJava Applet Windowが生成します。描画が終わらないうちに他のボタンを押さないようにしてください(遅くなります)。それから生成したウインドウは閉じることができないようです(よくわからない)。ブラウザを閉じて少し経つと消滅します。

1998.1.6




 IE3.02で見れない・・・・。

1997.12.28




 計算範囲を変えていろいろな部分を拡大してみました。ご覧になりたい方は題目の横の番号をクリックしてください。

 計算間違い発覚!全体が黒くならないといけないのに先の方に赤い部分があったのは計算ミスでした。それから、結局繰り込み計算の回数を30回から50回にしてしまった。50重のカッコは見ていて壮観だ。しかし、つくづく不毛な計算だよね。

1997.12.25




 やっぱりまだ重ね塗り状態みたい。Javaはよくわからない。でも他の言語がわかっているわけでもないしなぁ・・・・。

1997.12.25




 ふう、やっと重ね塗り状態を解消しました。でも計算結果を元の式に代入しながら加えていくループ計算方法が分からないままだ。しょうがないからifとelseで30重に囲んで計算しました。この方法が一番確実だ。はぁ〜、くたびれた。

1997.12.23




 同じ個所を30回も色を塗っていた(笑)。どうりで遅いわけだよ。

1997.12.23




 むちゃくちゃ苦労して作ったんですが、これが何?と言われると辛い。当初の目的はこれを拡大させながら動かすことだったんですが(フラクタル画像なので拡大させていくと次から次へと同じ形が出現します)、今の自分には無理だと悟りました(Javaでそういう事ができるんでしょうか?)。しかし遅い!何とかしろ!Sun!

1997.12.23