本帖最后由 dtucad 于 2023-8-24 23:40 编辑
问的GPT,居然是对的,虽然对高手没啥技术含量,但是对新手还是有用的,所以分享一下,如果违规就请版主删了吧
- ;判断点在直线的左右或线上
- (defun c:tt (/ p1 p2 p3 v1 v2 cross_product)
- (if (and
- (setq p1 (getpoint "\n选择起点"))
- (setq p2 (getpoint p1 "\n选择终点"))
- (setq p3 (getpoint "\n选择点"))
- )
- (progn
- (setq v1 (mapcar '- p2 p1)) ; 计算直线的向量
- (setq v2 (mapcar '- p3 p1)) ; 计算从直线起点到点的向量
- (setq cross_product (- (* (nth 0 v1) (nth 1 v2)) (* (nth 1 v1) (nth 0 v2)))) ; 计算叉积
-
- (cond
- ((> cross_product 1e-6) (princ "\n点在直线左侧"))
- ((< cross_product -1e-6) (princ "\n点在直线右侧"))
- (t (princ "\n点在线上"))
- )
- )
- )
- (princ)
- )
|