逆写像によるジュリア集合(2)
逆写像によるジュリア集合の描画では、その漸化式において、計算するごとに二つの値を得る、ということを前回見ました。
漸化式で計算結果が2つになるってことは、プログラム的には2分木の再帰処理ということですね。
実際のコードでは Julia クラス内の plot 関数において以下のように記述しました。
private function plot(z:Complex, c:Complex, generation:int):void {
// 中略
z = MathComplex.subtract(z, c);
z = MathComplex.sqrt(z);
var rl:Number = z.real;
var im:Number = z.imag;
generation--;
plot(new Complex( rl, im), c, generation);
plot(new Complex(-rl, -im), c, generation);
}
逆写像によるジュリア集合(1)
先般、フラクタルやカオスについていろいろ調べていたときに、カオス&フラクタル紀行というサイトに行き当たりました。
そちらのギャラリーページには、見た目が超萌えなカオス、フラクタルがてんこ盛り。しかもソース解放(ただし java)!
でもボクちん数学いまいちよく分からんので、ActionScript で書きたくても読み解けない悲しさよ。
まぁすべてが解析できないわけでもなくて、いくつかは理解できたんですが、その中から今回は「逆写像によるジュリア集合」ってのを ActionScript で書いてみましたその簡単な説明。
ブッダブロ
フラクタルねたで続けます。
マンデルブロ集合を基にして、よりアーティスティックな表現を求めて発見された「ブッダブロ」なるものがあるということで、ActionScript でコーディングしてみました。それが↓
ブッダブロ Buddhabrot – wonderfl build flash online
ジュリア集合
マンデルブロ集合の話をすると、もうひとつの集合が必ずといって頻度で話題になりますね。そう。ジュリア集合です。
聞くところによるとジュリア集合の方が古いそうな。マンデルブロはジュリア集合をいろいろ研究しているうちにマンデルブロ集合のアイディアに辿りついたとか。ジュリア集合の特殊な形がマンデルブロ集合、という感じなんですかね。
そんなわけか、マンデルブロ集合とジュリア集合は基本的には同じようなもん。どちらもその漸化式は、マンデルブロ集合のときにさんざん出てきた下のものです。
zn+1 = zn ^ 2 + c;
マンデルブロ集合は、複素数 z の初期値 z0 を 0 + 0i に固定し、複素数 c の方は複素数平面を走査する形で値を切り替え、その都度発散の評価をおこなう、というものでした。
ジュリア集合では、固定するのは c の方です。そして複素数平面を走査する形で値を切り替えるのは z0 です。
z0 と c の違いがありますが、やっていることは同じですね。
マンデルブロ集合(6) -マルチブロ-
マンデルブロ集合を描く漸化式は以下のようなものでした。
zn+1 = zn ^ 2 + c;
複素数 z を2乗したものと複素数 c を足したものを次の評価の値としますが、ここで2乗以外の冪乗にした場合、どのような図形が描画されるのか、というのが次のテーマ。
でその結果が↓
