JRubyでマンデルブロート集合
JRubyを使えば、Javaの豊富なライブラリを使うことができます。
とりあえず、マンデルブロート集合を書いてみました。
RubyなのにJavaのJFrameやGraphicsを使っています。
チョット遅いです。40秒ぐらいかかります。
require 'java' import java.awt.Color import javax.swing.JFrame import javax.swing.JComponent class Canvas < JComponent WIDTH = 200 HEIGHT = 200 MAX_COUNT = 50 def paint(g) for y in 0..HEIGHT for x in 0..WIDTH cx = 4.0 * (x - WIDTH / 2.0) / WIDTH cy = 4.0 * (y - HEIGHT / 2.0) / HEIGHT count = get_count(cx, cy) #puts "#{cx} #{cy} #{count}" if count == -1 then g.setColor(Color::BLACK) else b = 1.0 * count / MAX_COUNT g.setColor(Color.getHSBColor(0.0, 0.0, b)) end g.drawRect(x, y, 1, 1) end end end def get_count(cx, cy) count = 0 zx = 0.0 zy = 0.0 MAX_COUNT.times do zx2 = zx * zx zy2 = zy * zy if zx2 + zy2 >= 4.0 then return count end zx, zy = (zx2 - zy2 + cx), (2.0 * zx * zy + cy) count += 1 end -1 end def getPreferredSize() java.awt.Dimension.new(WIDTH, HEIGHT) end end frame = JFrame.new "Mandelbrot Set" canvas = Canvas.new frame.get_content_pane.add(canvas) frame.set_default_close_operation JFrame::EXIT_ON_CLOSE frame.pack frame.visible = true