2009年03月04日(水) [長年日記]
■ [ruby] RubyGemsでインストールしたライブラリをrequireする方法
昨日のスクリプトでは 'rubygems' をrequireするように書いたが、これは正しい作法ではないように思ったので調べた。
- 3.4 Post-install -- Setting Up the RubyGems Environment (RubyGems User Guide)
に、
- rubyコマンドに「-rubygems」オプションを付与して実行する
- 同じことだが、環境変数RUBYOPTに「rubygems」を追加する
とする方法が書かれていた。
■ [ruby] rcairoを使った

るびま0019号で紹介されていた2次元画像描画ライブラリcairoのRubyバインディングであるrcairoを使ってみた。
まだあまりよく分かっていないけれど、昨日と同じ星形を描いてみたのでメモ。ふむ、show_textを呼ぶと点の位置がずれてしまうのか。
#!/usr/bin/ruby
require 'cairo'
# プロットするデータ
triangle1 = [[10, 20], [70, 20], [40, 70]]
triangle2 = [[10, 60], [70, 60], [40, 10]]
surface = Cairo::ImageSurface.new(200, 180)
context = Cairo::Context.new(surface)
# 座標系の変換。斜めにずらして2倍の大きさに。
context.translate(10 , 10)
context.scale(2, 2)
# 赤い線
context.line_width = 2
context.set_source_color(:red)
context.stroke {
context.move_to(triangle1.last[0], triangle1.last[1])
triangle1.each_with_index {|t, i|
context.line_to(t[0], t[1])
context.save {
# 番号を出力
context.set_source_color(:black)
context.font_size = 10
context.show_text("[#{i}]")
}
}
}
# 緑の点線
context.line_width = 1
context.set_dash([5, 2])
context.set_source_color(:green)
context.stroke {
context.move_to(triangle2.last[0], triangle2.last[1])
triangle2.each {|t|
context.line_to(t[0], t[1])
}
}
surface.write_to_png("star-sample.png")
■ やること
- 請書
[ツッコミを入れる]