マンデルブロ集合の描画 by Dr.K

再生

 コンピューターで描く図形といえばおなじみ、マンデルブロ集合をプチコンで再現したプログラムだ。
 マンデルブロ集合についてある程度理解しているとして解説すると、計算するガウス平面の実軸範囲を変数RSSE、虚軸範囲をISIEで定義している。これらの数値を狭めていけば、描画されるパターンが変化するのがわかるだろう。
 3行目の変数KSは画面上の描画サイズ。6行目で図形を画面中央に描く調整をしている。

私が作りました

Dr.K

マンデルブロ集合を描くプログラムです。GOTO文を使ったのは何年ぶりだろう……


 CHECK POiNT 

ワンパク
マンデ……ブ……?

インテリ
マンデルブロ集合といえば、有名なフラクタル図形のひとつだね。シンプルな計算式でキレイなフラクタル(理論上、細かく拡大するほど無限に複雑になる図形)になるんだ。

ワンパク
フラ……?

神崎
ボクにもこれは難しい……。

博士
まあピンときづらい話ではあるかのう。これこそ検索してみるのが一番かもしれん。
インテリ君の言う通り、こんなシンプルなプログラムでこんな複雑な図形が描かれる、というところが神秘的でロマンチックなところじゃ。

ワンパク
ロマンチックだと……?

神崎
それは違う意味でハカセの言うことが分からないってことだね。

プログラムリスト

  1. CLEAR:CLS:GCLS:BGMPLAY 15
  2. VISIBLE 1,1,0,0,0,1
  3. KL=100:KS=100
  4. RS=-2.1:RE=0.5
  5. IS=-1.3:IE=1.3
  6. BX=(255-KS)/2:BY=(191-KS)/2
  7. DR=(RE-RS)/KS:DI=(IE-IS)/KS
  8. FOR CI=IS TO IE STEP DI
  9. FOR CR=RS TO RE STEP DR
  10. ZR=0:ZI=0:K=1
  11. @CAL
  12. IF K>KL GOTO @EXIT
  13. R=ZR*ZR-ZI*ZI+CR
  14. I=2*ZR*ZI+CI
  15. IF (R*R+I*I)>4 GOTO @DRAW
  16. ZR=R:ZI=I:K=K+1:GOTO @CAL
  17. @DRAW
  18. PX=BX+(CR-RS)/DR
  19. PY=BY+(CI-IS)/DI
  20. GPSET PX, PY, K%16
  21. @EXIT
  22. NEXT CR
  23. NEXT CI
  24. BGMPLAY 6