トップ «前の日記(2008-02-12) 最新 次の日記(2008-02-15)» 編集

Route 477



2008-02-13

[ruby][rspec] 「ANSI Common Lisp」9章のレイトレーサを移植した

raytra

わーい動いたよー。

感想

  • ソースコードを理解するのに、移植はかなり有効。(全ての行の動作を把握しないと移植できないから)
  • CLのletは、初期値がnilでよければ値を省略できるらしい。 (let (a b c) body..) とか

一応ソース。

あと、最初はRspecでテスト書いてたんだけど、途中からやめてしまった。 こっちもせっかくなので貼っておく。

require 'raytra.rb'

describe "Fixnum#sq" do
  it "は、二乗を計算する" do
    2.sq.should == 4
    -10.sq.should == 100
  end
end

context "Vector" do

  describe "#mag" do
    it "は、ベクタの長さを返す" do
      Vector[1,1,1].mag.should == Math.sqrt(3)
    end
  end

  describe "#unit_vector" do
    it "は、単位ベクタを返す" do
      Vector[23,12,47].unit_vector.mag.should == 1
    end
  end

end

context "Raytra" do

  describe ".distance" do
    it "は、二点間の距離を返す" do
      dist = Raytra.distance(Vector[3,3,3], Vector[2,2,2])
      dist.should == Vector[1,1,1].mag
    end
  end

  describe ".minroot" do
    it "は、二次方程式の小さいほうの実数解を返す" do
      # xx + 2x + 1 = 0
      Raytra.minroot(1, 2, 1).should == -1
    end
  end

end

日本語でRSpecを使うときは、「クラス名」「メソッド名」「は、〜する」という書き方が良いみたい。

本日のツッコミ(全2件) [ツッコミを入れる]
takkanm (2008-02-14 07:11)

itを"それ"にしてしまうと、さらに日本語っぽくよめますね。<br>ttp://d.hatena.ne.jp/darashi/20071009/1191898874

yhara (2008-02-15 20:59)

そうそう、書いてるとだんだんとitとかdescribeとかの英語が気になってくるんですよね…。