(defun ufb00014 ( u_p1 ;線分1始点 u_p2 ;線分1終点 u_p3 ;線分2始点 u_p4 ;線分2終点 u_eps ;許容誤差 / aa ;線分1と線分2がなす角度(度) ; nil:角度を求めるための上記線分の長さが許容誤差より短い xx yy l1 l2 a1 a2 ) ;2つの有限線の角度を求める (setq aa nil) (setq xx (- (car u_p2) (car u_p1))) (setq yy (- (cadr u_p2) (cadr u_p1))) (setq l1 (sqrt (+ (* xx xx) (* yy yy)))) (setq xx (- (car u_p4) (car u_p3))) (setq yy (- (cadr u_p4) (cadr u_p3))) (setq l2 (sqrt (+ (* xx xx) (* yy yy)))) (if (and (> l1 u_eps) (> l2 u_eps)) (progn (setq a1 (angle u_p1 u_p2)) (setq a2 (angle u_p3 u_p4)) (setq aa (- a2 a1)) (if (> aa PI) (setq aa (- aa (* 2.0 PI))) ) (if (<= aa (- PI)) (setq aa (+ aa (* 2.0 PI))) ) (setq aa (/ (* aa 180.0) PI)) ) ) aa )