直交座標と極座標の相互変換
ActionScript による直交座標と極座標の相互変換は以下のとおり。
Point.poler は不使用で。
x:直交座標におけるX座標値
y:直交座標におけるY座標値
r:極座標における距離
t:極座標における偏角(ラジアン値)
とする。
マンデルブロ集合(5) -実用コード-
今までのマンデルブロ集合の学習および非実用的なコードを踏まえて、実用的なコードを wonderfl に投稿しました。
マンデルブロ集合 – wonderfl build flash online
ボタンが分かりづらいかも知れませんが、上の3つが色分け切り替え、下の3つがズーム切り替えです。
色は白黒2色、モノトーン、カラフルの3つ、ズームは1倍、2倍、10倍です。10倍のとき、中心位置そのままだと単に黒い部分だけが描画されるので、少し移動させています。
以前の記事でも書きましたが、B/W ボタンを押したときに、黒で表示される部分がマンデルブロ集合で、白で表示される部分がマンデルブロ集合でない部分というわけですね。
マンデルブロ集合(4) -暫定コード-
過去3回を踏まえてコードを書くと以下のようになります。
しかしこのコード、マンデルブロ集合図描画の考え方を何のひねりもなくコードにしたものなので、実用性にはかなり問題あり。
たとえば複素数平面を走査する二重ループの部分(23、24行目)でインクリメント値が小数にしているため、ステージ幅・高によっては、正常に描画されません。インクリメントループのインクリメント値はやはり整数でないダメですね。
マンデルブロ集合(3) -外側のループ-
マンデルブロ集合を描くプログラムを書く場合、二重のループ構造を取ることになります。
そのループとは以下のふたつです。
- 外側のループは、複素数 c の集合を得るために離散的な複素数を順次評価するループ
- 内側のループは、漸化式が発散するか否かを評価するためのループ
前回は内側のループの話をしました。今回は外側のループの話。
マンデルブロ集合(2) -内側のループ-
前回はマンデルブロ集合を描くプログラムを書く場合、ループ構造の中にループ構造がある、二重のループ構造を取ることになる、という話でした。
- 外側のループは、複素数 c の集合を得るために離散的な複素数を順次評価するループ
- 内側のループは、漸化式が発散するか否かを評価するためのループ
分かりやすい内側のループからやっつけていきましょう。
いきなり結論から。以下のようなコードになります。パフォーマンス的に明らかに問題のある書き方をしていますが、説明を分かりやすくするための処置です。
