next up previous
Next: 20.1 locate, rotate Up: ソフトウェア第三 講義資料 クロージャ,スコープ,遅延評価,オブジェクト,立体モデル Previous: 19.3 回転行列

20 座標系モデル

ロボットや機械CADなどの幾何学計算では,斉次行列によって位置や方向ベク トルを表現し,座標変換を計算する手法がよく使われる. その座標変換には前節のベクトルや行列の計算関数を用いることができるが, 座標系を考慮すると座標系間の親子関係を意識する必要があるため, 座標系データ間の関係を表す附属情報を表現する手段が必要になる. そこで,座標系をクラスで表現し,親子関係を表す属性値(インスタンス変数) を持たせ,その座標系にまつわる基本手続きをそのクラスのメソッドとして用 意するという方法が考えられる.euslispでは,そのようなクラスとして cascaded-coordsというクラスがあります.cascaded-coordsの親クラスとして coordinatesというクラスがある.

(defclass coordinates
  :super propertied-object
  :slots (rot pos))

(defclass cascaded-coords
  :super coordinates
  :slots (parent descendants
          worldcoords manager changed))
たとえば,
eus$ setq c1 (instance coordinates :init)
#<coordinates #X339d9c  0.0 0.0 0.0 / 0.0 0.0 0.0>
eus$ describe c1
plist=nil
rot=#2f((1.0 0.0 0.0)
        (0.0 1.0 0.0)
        (0.0 0.0 1.0))
pos=#f(0.0 0.0 0.0)
nil
eus$ (send c1 :pos)
#f(0.0 0.0 0.0)
eus$ (send c1 :rot)
#2f((1.0 0.0 0.0) (0.0 1.0 0.0) (0.0 0.0 1.0))
というように,instanceという手続きでインスタンスを作り, 位置や方向の値をメソッドでとり出すことが可能.



generated through LaTeX2HTML. M.Inaba 平成18年5月7日