2点を通る直線、直線と点の距離
(defun def-line (p1 p2) "2点を通る直線を定義する。 2点 p1(x1 y1) p2(x2 y2) が与えられたとき、ax + by + c = 0 を満たす(a b c)を返す。" (let ((x1 (car p1)) (y1 (cadr p1)) (x2 (car p2)) (y2 (cadr p2))) (list (- y2 y1) (- x1 x2) (- (* x2 y1) (* x1 y2))))) (defun line-point-distance (l p) "線l(a b c) と点p(x0 y0)の距離を求める。" (let ((a (car l)) (b (cadr l)) (c (caddr l)) (x0 (car p)) (y0 (cadr p))) (/ (abs (+ (* a x0) (* b y0) c)) (sqrt (+ (expt a 2) (expt b 2))))))