この節のメソッドおよび関数は、次のファイルに記述されている。 contact/model2const.l, contact/inequalities.l, contact/drawconst.l
;; ;; 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)拘束の例を次の図で示す。図の小さな矢印は,ペグに対する拘束を示す。