
- ;用向量叉积来判断
- (defun c:test()
- (setq eps 1e-6) ;计算误差
- (if (setq p1 (getpoint "\n直线起点:"))
- (if (setq p2 (getpoint p1 "\n直线终点:"))
- (while (setq pt (getpoint "\n待判断点:"))
- (setq dxy1 (mapcar '- p2 p1) ;向量P1->p2
- dxy2 (mapcar '- pt p1) ;向量P1->pt
- ;向量叉积
- xlcj (- (* (car dxy1) (cadr dxy2)) (* (cadr dxy1) (car dxy2)))
- )
- (cond ((<= (- eps) xlcj eps) (princ "\n点在直线上(包括在延长线上)"))
- ((> xlcj eps) (princ "\n点在直线左侧"))
- ((< xlcj (- eps)) (princ "\n点在直线右侧"))
- )
- )
- )
- )
- (princ)
- )
|