数学者のマンデルブロー氏が今月の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は魔王魂さんの音楽素材を使わせていただきました。







