数学者のマンデルブロー氏が今月の14日に亡くなったそうです。
時事ドットコム:数学者マンデルブロー氏死去
追悼ということで、マンデルブロ集合をプロットしてみました。

上のは拙作「lua for aviutl」で作成しました。ソースは下の通り。
せっかくAviUtlでプロットしているので、動画にもしてみました。
ただ、luaでは処理に時間がかかりすぎるため、C言語で作成したプラグインでプロットしてます。
doubleの精度ではこれが限界です。
小技として1920x1440で作成して640x480に縮小することでアンチエイリアスの効果を出してます。1920x1440と大きいため、38秒の動画作成に30分以上かかりました。
BGMは魔王魂さんの音楽素材を使わせていただきました。
時事ドットコム:数学者マンデルブロー氏死去
追悼ということで、マンデルブロ集合をプロットしてみました。

上のは拙作「lua for aviutl」で作成しました。ソースは下の通り。
-- 【マンデルブロー集合】 function func_proc() local ycp_edit = aviutl.get_ycp_edit() -- 現在の編集画像領域取得 local w, h = aviutl.get_size() -- 現在のサイズ取得 -- 設定項目 local ar = -0.75 -- 描画座標(実数部) local ai = 0.0 -- 描画座標(虚数部) local al = 2.5 -- 大きさ local loop_max = 64 -- ループの上限 -- 計算数を減らすための事前計算 local dcol = 4096.0 / loop_max -- 色の階調幅 local range = w if h > w then range = h end range = al / range -- 1ドットあたりの差分 for y = 0, h do local ci = ai + range * (y - h/2) -- 虚数部 for x = 0, w do local cr = ar + range * (x - w/2) -- 実数部 local zr, zi, i = cr, ci, 0 while i < loop_max and zr*zr + zi*zi <= 4 do zr, zi = zr*zr - zi*zi + cr, 2 * zr * zi + ci i = i + 1 end aviutl.set_pixel( ycp_edit, x, y, 4096 - i * dcol, 0, 0 ) end end end -- スクリプト終了時に呼ばれる関数 function func_exit() end
せっかくAviUtlでプロットしているので、動画にもしてみました。
ただ、luaでは処理に時間がかかりすぎるため、C言語で作成したプラグインでプロットしてます。
doubleの精度ではこれが限界です。
小技として1920x1440で作成して640x480に縮小することでアンチエイリアスの効果を出してます。1920x1440と大きいため、38秒の動画作成に30分以上かかりました。
BGMは魔王魂さんの音楽素材を使わせていただきました。