これまで Ruby でのグラフィック描画には自作の Gem 'oekaki' を使ってきましたが、高機能で簡単に使える Gem 'Ruby 2D' がリリースされたのでちょっと使ってみました。
www.ruby2d.com
インストール
Window, Mac, Linux で使えるようですが、Windows は MinGW 環境が必要なようです。自分は Linux Mint 19.1, Ruby 2.6.0 で確認しました。
とりあえず Linux 環境でのインストール方法です。上のサイトの手順どおりです。
まず SDL を使っているようなので、パッケージをインストールします。
$ sudo apt install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev
「simple2d」をインストールします。ここから「Source code」をダウンロード、解凍してフォルダ内に入り、
$ make && sudo make install
でインストールされます。(追記:現在はこれは不要なようです。4/27記)
Gem をインストールします。'gem install ruby2d' あるいは Bundler でインストール可能です。確認は例えば
$ pry [1] pry(main)> require 'ruby2d' => true
となれば OK です。
(追記:現在 Windows では Gem のインストールだけで使えます。ただし MinGW-64bit 環境のみです。4/27記)
ヒルベルト曲線を描いてみる
Ruby 2D の使い方はシンプルで、上のサイトを見れば簡単にわかります。ヒルベルト曲線を描画してみます。
コード。
ruby2d_sample1.rb
require 'ruby2d' require 'matrix' Width = 600 N = 5 class Pen def initialize @po = Vector[35, Width - 35] @dir = Vector[1, 0] end def go step = (Width - 50) / (2 ** N - 1) next_po = @po + @dir * step c = Color.new("red") #色 Line.new(x1: @po[0], y1: @po[1], x2: next_po[0], y2: next_po[1], #線を描く width: 1, color: c) @po = next_po end def left(a) @dir = Matrix[[0, -1], [1, 0]] * @dir * a end def right(a) @dir = Matrix[[0, 1], [-1, 0]] * @dir * a end end set title: "Hilbert curve", width: Width, height: Width #ウィンドウの大きさなどの指定 set background: "#F8F8FF" #背景色 pen = Pen.new draw = ->(depth, a) { return if depth.zero? pen.right(a) draw.(depth - 1, -a) pen.go pen.left(a) draw.(depth - 1, a) pen.go draw.(depth - 1, a) pen.left(a) pen.go draw.(depth - 1, -a) pen.right(a) } draw.(N, 1) show #描画
Ruby 2D はまだまだ機能がたくさんあります。もっと使ってみたいと思います。