找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1922|回复: 6

[每日一码] 判断一个点是否在直线上或在直线的延长线上

[复制链接]

已领礼包: 146个

财富等级: 日进斗金

发表于 2014-8-29 21:53:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 lgx9612 于 2014-8-30 08:16 编辑

判断一个点是否在直线上或在直线的延长线上(附:直线跟点都是给定参数而定的,图中并没有这此图素,是虚拟的,此程序用来计算用
  1. (defun inters_point&line (l-point1 l-point2 p-point1 show / return_result_lgx)
  2. ;;;原创,编写:刘国新
  3. ;;;判断一个点是否在直线上或在直线的延长线上
  4. ;;;用法如下
  5. ;;;(inters_point&line (getpoint "\n直线的第一点:\n")(getpoint "\n直线的第二点:\n")(getpoint "\n判断点是否落在直线上:\n") "show")
  6. (setq return_result_lgx nil)  
  7. (if (or (= l-point1 nil) (= l-point2 nil) (= p-point1 nil) (= (distance l-point1 l-point2) 0))
  8. (setq return_result_lgx nil)
  9. (progn
  10. (if (or (equal (angle l-point1 l-point2)(angle l-point1 p-point1) 0.0005)(equal (angle l-point1 l-point2)(angle l-point2 p-point1) 0.0005))
  11. (progn
  12. (if (= (+ (distance p-point1 l-point1)(distance p-point1 l-point2))(distance l-point2 l-point1))
  13. (progn
  14. (if (/= show nil)
  15. (princ "\n该点落在直线上!!!\n")
  16. )
  17. (setq return_result_lgx 1)
  18. )
  19. (progn
  20. (if (/= show nil)
  21. (princ "\n该点在直线的延长线上!!!\n")
  22. )
  23. (setq return_result_lgx 2)
  24. )
  25. )
  26. )
  27. (progn
  28. (if (/= show nil)
  29. (princ "\n该点不在直线上或直线的延长线上!!!\n")
  30. )
  31. (setq return_result_lgx nil)
  32. )
  33. )
  34. )
  35. )
  36. (princ)
  37. return_result_lgx
  38. )


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-8-29 23:57:01 | 显示全部楼层
(trans (mapcar '- pnt p1) 0 (mapcar '- p2 p1))
看 高飞版主那个 Trans 帖子

点评

给个链接  详情 回复 发表于 2014-8-30 13:32
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 146个

财富等级: 日进斗金

 楼主| 发表于 2014-8-30 13:32:46 | 显示全部楼层
st788796 发表于 2014-8-29 23:57
(trans (mapcar '- pnt p1) 0 (mapcar '- p2 p1))
看 高飞版主那个 Trans 帖子

给个链接
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-8-30 13:52:55 | 显示全部楼层

这个 Trans  包含很多有用信息
  1. ;;0 --- p1
  2. ;;1 --- between p1 p1
  3. ;;2 --- p2
  4. ;;3 --- p2->p1 extend line
  5. ;;4 --- p1->p2 extend lien
  6. (defun p&ln (p p1 p2 / l d _x)
  7.   (setq        l (trans (mapcar '- p p1) 0 (mapcar '- p2 p1))
  8.         d (distance p1 p2)
  9.   )
  10.   (if (equal (setq _x (car l)) 0.0 1e-6)
  11.     (progn (setq _x (last l))
  12.            (cond
  13.              ((equal _x 0.0 1e-6) 0)
  14.              ((< 0 _x d) 1)
  15.              ((equal _x d 1e-6) 2)
  16.              ((< _x 0) 3)
  17.              (t 4)
  18.            )
  19.     )
  20.     _x
  21.   )
  22. )

点评

受教,谢谢!非常巧妙,开始还不大好理解.受益非浅!  详情 回复 发表于 2014-8-30 14:45
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 146个

财富等级: 日进斗金

 楼主| 发表于 2014-8-30 14:45:41 | 显示全部楼层
st788796 发表于 2014-8-30 13:52
这个 Trans  包含很多有用信息

受教,谢谢!非常巧妙,开始还不大好理解.受益非浅!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1094个

财富等级: 财源广进

发表于 2021-7-2 00:05:26 | 显示全部楼层
感谢楼主分享判断一个点是否在直线上或在直线的延长线上!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 756个

财富等级: 财运亨通

发表于 2021-7-2 08:28:25 | 显示全部楼层
感谢分享源码与讨论,受益匪浅!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 14:05 , Processed in 0.179718 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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