ジュリア集合を描いてみる(Ruby)

ジュリア集合(Julia set)を Ruby で描いてみました。
20180318023736
 
描画には自作の Gem 'oekaki' を使っています。
oekaki | RubyGems.org | your community gem host
GTK+でお絵かきしてみた(Ruby) - Camera Obscura
 
コード。
julia_set.rb

require 'oekaki'

Width, Height = 600, 400

Oekaki.app width: Width, height: Height, title: "Julia set" do
  draw do
    clear
    red   = color(0xffff, 0, 0)
    green = color(0, 0xffff, 0)
    blue  = color(0, 0, 0xffff)
    
    a, jmid = 4.0 / Width, Height / 2
    Width.times do |i|
      jmid.times do |j|
        x, y = a * i - 2.0, a * j
        catch(:jump) do
          16.times do
            x2, y2 = x * x, y * y
            d = x2 + y2
            break if d < 1e-10
            d = d * d
            x, y = (1.0 / 3) * (2 * x + (x2 - y2) / d), (2.0 / 3) * y * (1 - x / d)
            ya = sqrt(3) / 2
            
            drawing = proc do |x1, y1, c1, c2|
              if x1 * x1 + y1 * y1 < 0.0025
                point(i, jmid + j, c1)
                point(i, jmid - j, c2)
                throw(:jump)
              end
            end
            
            drawing[x - 1, y, red, red]
            drawing[x + 0.5, y + ya, green, blue]
            drawing[x + 0.5, y - ya, blue, green]
          end
        end
      end
    end
  end
end

 

C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー)

C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー)

これおもしろい本です。おすすめ!