Tellur52の日記: Mandelbox - フラクタルのおもちゃ箱
ここ数年のフラクタル界隈の潮流として、
比較的簡単な生成アルゴリズムによる3次元フラクタルの風景探訪がすごいことになっている。
中心となっているのは、3次元のベクトルに対する変換操作で、
Mandelbrot集合に類似した集合となる、一群のフラクタル「Mandelbox」
(Googleでの画像検索)である。
まずは、画像の一覧を見てその多様性と美を堪能してほしい。
アルゴリズムは単純で、ベクトルv=Oを初期値として、vに対して以下の変換(1~3)を
連続して行い、vが無限遠に飛ばない加算値のベクトルcの集合をとるというものである。
1. x,y,z軸について、-1~1の範囲を少しはみ出る点を救済するために、
並進+鏡像変換で、範囲内に近づける
for p in x, y, z do v'p = if vp > 1 then 2 - vp else if vp < -1 then -2 - vp else vp done
・この操作がMandelboxに対して立方体の対称性を付与する
・Mandelboxの変種では、ここに回転操作を加えたりする
2. vの長さmに対して非線形変換をかける
m' = |v'|
m'' = if m' < r then m' / r^2 else if m' < 1 then 1 / m' else m'
v'' = (m'' / m') v
(rは通常0.5が選択される)
3. 定数倍してベクトルcを加算する
v next = s v'' + c
ここで、定数倍の係数sによって、Mandelboxの箱の中は複雑に変わる。
中でも、s = -1.5 の箱は、コッホ曲線やシェルピンスキーの三角形など、
お馴染みの古典的なフラクタルに類似した模様が箱の内部に沢山出てくるようで、
観光の名所となっているようだ。
Mandelbox - フラクタルのおもちゃ箱 More ログイン