明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1607|回复: 7

[已解答] 在任意角度的直线旁边点取一点A(如图),如何辨别该点是在直线的左边还是右边?

[复制链接]
发表于 2013-9-28 15:34:43 | 显示全部楼层 |阅读模式
在任意角度的直线旁边点取一点A(如图),如何辨别该点是在直线的左边还是右边?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-9-28 16:41:02 | 显示全部楼层
可以通过获取直线坐标点计算出方位角,然后以直线起点为基点旋转判断点和直线至方位角为0度,判断x,y大小不就行了?
发表于 2013-9-28 20:23:00 | 显示全部楼层
直线AB,点为C,

Returns an angle in radians of a line defined by two endpoints

(angle pt1 pt2)

求得A->B及A->C的角度A1、A2,校验A2-A1之差是否大于零。
发表于 2013-9-28 21:43:32 | 显示全部楼层

  1. ;用向量叉积来判断
  2. (defun c:test()
  3.     (setq eps 1e-6) ;计算误差
  4.     (if (setq p1 (getpoint "\n直线起点:"))
  5.         (if (setq p2 (getpoint p1 "\n直线终点:"))
  6.             (while (setq pt (getpoint "\n待判断点:"))
  7.                  (setq dxy1 (mapcar '- p2 p1) ;向量P1->p2
  8.                        dxy2 (mapcar '- pt p1) ;向量P1->pt
  9.                        ;向量叉积
  10.                        xlcj (- (* (car dxy1) (cadr dxy2)) (* (cadr dxy1) (car dxy2)))
  11.                  )
  12.                  (cond ((<= (- eps) xlcj eps) (princ "\n点在直线上(包括在延长线上)"))
  13.                        ((> xlcj  eps)         (princ "\n点在直线左侧"))
  14.                        ((< xlcj (- eps))      (princ "\n点在直线右侧"))
  15.                  )
  16.             )
  17.         )
  18.     )
  19.     (princ)
  20. )
发表于 2013-9-28 22:00:33 | 显示全部楼层

  1. ;; 云共享 http://yunpan.cn/QXQKsW9gAPmpF
  2. (defun c:tt ()
  3.   (setq        s1 (car (entsel "\n选择直线: "))
  4.         p1 (xyp-DXF 10 s1)
  5.         p2 (xyp-DXF 11 s1)
  6.   )
  7.   (while (setq p3 (getpoint "\n基点<退出>: "))
  8.     (setq tx (if (xyp-PlineCCW-Check (list p1 p2 p3)) "左" "右"))
  9.     (xyp-Text 5 p3 tx)
  10.   )
  11.   (princ)
  12. )
 楼主| 发表于 2013-9-29 08:09:08 | 显示全部楼层
谢谢以上各位帮助,问题已解决
发表于 2013-9-29 12:31:26 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2013-9-29 13:38 编辑

highflybird在trans讲解中是这样判断的

;;通过正负判断
(car (trans (mapcar '- (getpoint "\n 被判断点") (setq p1 (getpoint "\n 直线起点"))) 0 (mapcar '- (getpoint "\n 直线终点") p1)))
 楼主| 发表于 2013-9-29 14:55:42 | 显示全部楼层
自贡黄明儒 发表于 2013-9-29 12:31
highflybird在trans讲解中是这样判断的

;;通过正负判断

谢谢,你这简洁,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-26 07:40 , Processed in 0.179095 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表