立体の接触状態解析¶
この節のメソッドおよび関数は、次のファイルに記述されている。 contact/model2const.l, contact/inequalities.l, contact/drawconst.l
constrained-motion c
拘束cを満たしている 動作のリストを返す。
constrained-force m
拘束されているbodyから 拘束しているbodyに加わる力を返す。mは、constrained-motion から返される動作のリストである。
draw-constraint c
拘束cを描く。
draw-motion m a b
がbに接触しているときに 取り得る動作を描く。リターンキーを押すことにより描画を始める。
Example
;;
;; peg in a hole with 6 contact points
;;
(in-package "GEOMETRY")
(load "view")
(load "../model2const.l" :package "GEOMETRY")
(load "../inequalities.l" :package "GEOMETRY")
(load "../drawconst.l" :package "GEOMETRY")
(setq x (make-prism '(#f(50 50 0) #f(50 -50 0) #f(-50 -50 0) #f(-50 50 0))
#f(0 0 200)))
(setq x1 (copy-object x))
(send x1 :translate #f(0 0 -100))
(send x1 :worldcoords)
(setq a1 (make-prism '(#f(100 100 -150) #f(100 -100 -150)
#f(-100 -100 -150) #f(-100 100 -150))
#f(0 0 150)))
(setq ana (body- a1 x1))
(send x :translate #f(0 -18.30127 -18.30127))
(send x :rotate -0.523599 :x)
(send x :worldcoords)
(setq c (list (send x :constraint ana)))
(setq m (constrained-motion c))
(setq f (constrained-force m))
(hidd x ana)
(draw-constraint c)
(draw-motion m)
拘束の例を次の図で示す。図の小さな矢印は,ペグに対する拘束を示す。
ペグを穴に入れる作業において取り得る動作の例を次の図で示す。 この例は,上記のプログラムと一致している。