找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2971|回复: 8

[点表] 判断点是否在点表组成的多边形内(适合任意多边形)

[复制链接]

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-6-15 09:06:18 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::Pnt:IsInside
调用格式: (XD::Pnt:IsInside pnt pts)
参数说明: pnt ---- 测试点
pts ---- 点表
返回值: T --- 在内部
NIL
函数简介: 判断点是否在点表组成的多边形内(适合任意多边形)
函数来源: 原创
函数作者: XDSoft
适用版本: 不限 
最后更新时间: 2013-06-15
备注: 用到的XD::开头的函数,请到“函数发布”栏目下下载。
演示图片: -

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

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

×
  1. ;|
  2. 判断点是否在点表内
  3. |;
  4. (defun XD::Pnt:IsInside (pt pts / an total x)
  5.   (setq pts (XD::List:SnakePair (XD::PnTs:Close pts))
  6.         total 0.0
  7.   )
  8.   (mapcar
  9.     '(lambda (x)
  10.        (setq an (- (angle pt (car x)) (angle pt (cadr x))))
  11.        (cond
  12.          ((> an pi)
  13.            (setq an (- an pi))
  14.          )
  15.          ((< an (* -1 pi))
  16.            (setq an (+ an pi))
  17.          )
  18.        )
  19.        (setq total (+ total an))
  20.      )
  21.     pts
  22.   )
  23.   (if (equal (- (abs total) pi) 0.0 1e-5)
  24.     t
  25.     nil
  26.   )
  27. )

评分

参与人数 1D豆 +5 收起 理由
wowan1314 + 5 感觉很有用! 就是不知道用在哪。。。哈

查看全部评分

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

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2013-6-17 08:08:05 | 显示全部楼层
这个好,任意多边形,更有通用性!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-10-16 16:03:56 | 显示全部楼层
(defun pinpt(p pt / a)
  (setq pt(if(equal(car pt)(last pt))pt(cons(last pt)pt))ang 0)
  (equal(abs(apply'+(mapcar'(lambda(x)(setq a(-(angle p(nth(vl-position x(cdr pt))pt))(angle p x)))
     (cond((> a pi)(- a pi))((< a(- 0 pi))(+ a pi))(T a)))(cdr pt))))pi 1e-6))

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

使用道具 举报

发表于 2014-10-17 17:40:57 | 显示全部楼层
因为使用了angle函数,仅适用于二维任意多边形;对于空间封闭多边形,还得做基于多边形平面法向矢量的坐标变换,否则将得到二维投影效果。

点评

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

使用道具 举报

发表于 2014-10-17 18:18:35 来自手机 | 显示全部楼层
高山流水 发表于 2014-10-17 17:40
因为使用了angle函数,仅适用于二维任意多边形;对于空间封闭多边形,还得做基于多边形平面法向矢量的坐标 ...

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

使用道具 举报

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

使用道具 举报

已领礼包: 244个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 14个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 04:02 , Processed in 0.280379 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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