Next: 21 三次元形状記述
Up: 20 座標系モデル
Previous: 20.1 locate, rotate
親子関係を持たせる手続きとして,:assocがある.
c2が親で,c3が子供という親子関係をもつと,c2を回転するとc3の場所と向き
もいっしょに変更される.親子関係をはずすメソッドが:dissoc.
親を回転した場合に,親子関係の末端がどのように移動するかの計算には,
:worldcoordsメソッドを末端のインスタンスに送る必要がある.
(毎回計算して計算時間の無駄が起こるのを防ぐため)
eus$ (send c2 :assoc c3)
#<cascaded-coords #X339118 100.0 0.0 0.0 / 0.0 0.0 0.0>
eus$ (send c2 :rotate (deg2rad 45) :z)
#<cascaded-coords #X3394cc
0.0 0.0 0.0 / 0.785 0.0 0.0>
eus$ (send c3 :worldcoords)
#<coordinates #X33907c
70.711 70.711 0.0 / 0.785 0.0 0.0>
eus$ (describe c3)
plist=nil
rot=#2f((1.0 0.0 0.0)
(0.0 1.0 0.0)
(0.0 0.0 1.0))
pos=#f(100.0 0.0 0.0)
parent=#<cascaded-coords #X3394cc
0.0 0.0 0.0 / 0.785 0.0 0.0>
descendants=nil
worldcoords=#<coordinates #X33907c
70.711 70.711 0.0 / 0.785 0.0 0.0>
manager=#<cascaded-coords #X339118
70.711 70.711 0.0 / 0.785 0.0 0.0>
changed=nil
nil
eus$ (describe (send c3 :worldcoords))
plist=nil
rot=#2f((0.707107 -0.707107 0.0)
(0.707107 0.707107 0.0)
(0.0 0.0 1.0))
pos=#f(70.7107 70.7107 0.0)
nil
:worldcoordsで返されるデータはcoordinatesのインスタンスである.
generated through LaTeX2HTML. M.Inaba 平成18年5月7日