HelloPhysicsWorld->vecmath-ruby->chapter5

 そういえば、Rubyは参照渡しできないんだね。使おうと思ったこともなかったので気づかなかったw;

rubyx.vecmath.Matrix3クラスのget_rowメソッドを仕方なく、以下で実装した><

class Matrix3
  def get_row row
    raise "" unless row < 3
    
    vec = Vector3.new
    
    case row
    when 0
      vec.vx = @m00
      vec.vy = @m01
      vec.vz = @m02
    when 1
      vec.vx = @m10
      vec.vy = @m11
      vec.vz = @m12
    when 2
      vec.vx = @m20
      vec.vy = @m21
      vec.vz = @m22
    end
    
    vec
  end
end

 rubyで、もしc++っぽい参照渡しが使えるなら*1以下みたいな感じで書きたいんだけな。

class Matrix3
  def get_row row,&vec          #<=以下はrubyの文法的にNG
    raise "" unless row < 3
    
    case row
    when 0
      vec.vx = @m00
      vec.vy = @m01
      vec.vz = @m02
    when 1
      vec.vx = @m10
      vec.vy = @m11
      vec.vz = @m12
    when 2
      vec.vx = @m20
      vec.vy = @m21
      vec.vz = @m22
    end
  end
end

 javax.vecmathは内部でオブジェクトの生成をしない設計ポリシーのようですのでrubyx.vecmathもそうしたかったのですけど、ruby的に無理っぽいですねw

 まあrubyなんでrubyらしくってとこですか。おいおい再検討です。

*1:以下の&hogehogeの文法はrubyではblockなんでsyntaxエラーですけど^^;