明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2229|回复: 5

求助:如何判断一个点是否在某一多边形内??

[复制链接]
发表于 2005-7-17 15:01:00 | 显示全部楼层 |阅读模式
求助:如何判断一个点是否在某一多边形内??
发表于 2005-7-17 21:36:00 | 显示全部楼层

请到“测量空间”网站的“函数”网页中看看吧,那里有你需要的“如何判断一个点是否在某一多边形内”。

发表于 2005-7-19 23:47:00 | 显示全部楼层
;;By Xiao_longxin 明经通道
;;有一不规则多边形由点a1(x1,y1)、a2(x2,y2).....an(xn,yn)依次连接而成,如何求证点p(x,y)是在多边形内还是多边形外?
;;将直线PAi记作ki.将ki旋转到ki+1(令kn+1=k1)的角记为βi(规定逆时针为正,顺时针为负,如果βi大于180就变成βi-360)。
;;从直观上看有下面的结论
;;若P在形内,诸β的代数和为360度;
;;若P在形外,诸β的代数和为0。

;;pt_list 为((x y z) (x y z)......(x y z))即围成多边形的表
;;
;;自相交多边形适用,不适用于曲线
(defun inorout (lst pt)
(equal
PI
(abs
(apply
'+
(mapcar '(lambda (x y) (rem (- (angle pt x) (angle pt y)) PI))
(cons (last lst) lst)
lst
)
)
)
1e-6
)
)



;;测试
(defun c:tt ()
(setq lst (mapcar 'cdr
(vl-remove-if
'(lambda (x) (/= 10 (car x)))
(entget (car (entsel)))
)
)
pt (getpoint)
)
(inorout lst pt)
)
发表于 2005-7-20 17:03:00 | 显示全部楼层
图形法:从测试点画直线到多边形外一点,直线与多边形交点数量为奇数则测试点在多边形内
发表于 2005-7-20 17:42:00 | 显示全部楼层

楼上的,如果点在多边形的边上,如何判断?

还是用矢量旋转比较好,360度在内部,0度在处面,180度在边上,

 

发表于 2005-7-20 18:07:00 | 显示全部楼层
若是判断点在多义线内外呢?多义线有圆弧,点在圆弧上楼上的就错了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 18:48 , Processed in 0.167963 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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