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