複素フィボナッチ数列と GTK+ お絵かき

GTK+でお絵かきしてみた(Ruby) - Camera Obscura
これまで mygtk.rb と言っていた GTK+ お絵かきモジュールを、Gem 'oekaki' として RubyGems.org に登録いたしました。よろしかったら使ってやって下さい。
oekaki | RubyGems.org | your community gem host
その簡単な記録が
最小限度の Ruby Gem 作成と公開 - Marginalia
であります。


それとちょっと関係してといいますか、いつも拝読しているブログ「完全無欠で荒唐無稽な夢」の記事に、複素フィボナッチ数列というおもしろそうな題材がありましたので、お絵かきしてみました。数列を複素平面にプロットしただけであります。ただし、ものすごい勢いで原点から遠ざかったりもするので、原点からの距離は対数をとってあります。
複素フィボナッチ数列の件 - 完全無欠で荒唐無稽な夢

複素フィボナッチ数列とは,
  
というものですね。

まず、
  
の場合。

わかりにくいけれど、螺旋ですね。

上ブログ記事にあった、
  
の場合。

あんまり変わらないですかね。


Ruby のコード。

require 'oekaki'

L = 400
a = Complex(1, -1)
b = Complex(1,  1)

Oekaki.app width: L, height: L do
  draw do
    color(0, 0, 0)
    rectangle(true, 0, 0, L, L)
  end
  
  plot = lambda do |a|
    x1 = a.real
    y1 = a.imaginary
    r = Math.sqrt(x1 ** 2 + y1 ** 2)
    l = Math.log(r) * 2.5
    x = L / 2 + 1 + x1 * l / r
    y = L / 2 + 1 - y1 * l / r
    color(0, 65535, 0)
    arc(false, x, y, 3, 3, 0, 64 * 360) rescue return
  end  
  
  timer(20) do
    plot.call(a)
    a, b = b, b + Complex::I * a
  end
  
  key_in do |w, e|
    Gtk.main_quit if e.keyval == Gdk::Keyval::GDK_Return
  end
end

リターンキーで画面が閉じます。