メモの日々


2009年03月04日(水) [長年日記]

[ruby] RubyGemsでインストールしたライブラリをrequireする方法

昨日のスクリプトでは 'rubygems' をrequireするように書いたが、これは正しい作法ではないように思ったので調べた。

に、

  • 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")

やること

  • 請書