Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2006-11-22

テニスゲームの実装(2)

3Dだーっと思って昔の日記から Vector3D の考察を探し出してクラスを書いてみたが、視点固定の擬似3DならX軸回転とスクリーン投影だけでことたりるので Vector3D を使わなくてもシンプルに書けてしまうことに気づいた。

class Vector3D < Array
   %w(x y z).each_with_index do |e, i|
     eval "def #{e} ; self[#{i}] ; end"
     eval "def #{e}=a ; self[#{i}] = a ; end"
   end
   %w(+ - * /).each do |e|
     eval "def #{e}d
             Vector3D[self[0] #{e} d[0], self[1] #{e} d[1], self[2] #{e} d[2]]
           end"
   end
end