(defun ufb00008 ( u_fg ;左右フラグ(1:右へオフセット、2:左へオフセット) u_p1 ;線分の始点 u_p2 ;線分の終点 u_mm ;オフセット距離 u_eps ;許容誤差 u_epe ;許容誤差(規格化用) / pout ;オフセット線分始点、終点 ; nil:オフセット線分が求まらない ; 始点と終点が同一点 vv pv pc aa pw vrx vry xr1 yr1 xr2 yr2 vlx vly xl1 yl1 xl2 yl2 ) ;有限線分左右へのオフセット点を求める (setq pout nil) (setq vv (ufb00001 u_p1 u_p2 u_eps)) (if (/= vv nil) (progn (setq pv (list (car vv) (cadr vv) 0.0)) (setq pc (list 0.0 0.0 0.0)) (if (= u_fg 1) (progn (setq aa -90.0) (setq pw (ufb00007 pv pc aa)) (setq vrx (car pw)) (setq vry (cadr pw)) (setq xr1 (+ (car u_p1) (* u_mm vrx))) (setq yr1 (+ (cadr u_p1) (* u_mm vry))) (setq xr2 (+ (car u_p2) (* u_mm vrx))) (setq yr2 (+ (cadr u_p2) (* u_mm vry))) (setq pout (list (list xr1 yr1 0.0) (list xr2 yr2 0.0))) ) ) (if (= u_fg 2) (progn (setq aa 90.0) (setq pw (ufb00007 pv pc aa)) (setq vlx (car pw)) (setq vly (cadr pw)) (setq xl1 (+ (car u_p1) (* u_mm vlx))) (setq yl1 (+ (cadr u_p1) (* u_mm vly))) (setq xl2 (+ (car u_p2) (* u_mm vlx))) (setq yl2 (+ (cadr u_p2) (* u_mm vly))) (setq pout (list (list xl1 yl1 0.0) (list xl2 yl2 0.0))) ) ) ) ) pout )