zzl9105 发表于 2018-5-21 10:29:41

简单判断点是否在闭合多边形内的小程序

我有一个简单的想法,目标对象是闭合多段线,就是判断它自身任意一个角点是不是在其它角点所形成的多段线内来实现这个功能,如果在内,则去掉这个点,如果在外,则保留,这样走一圈下来,没有去除的点所形成的点集就是凸外接多边形的角点了。
有没有一个简单的功能,能实现判断一个点是否在多段线内
谢谢。(不需要太复杂的那个包罗万象的外接多边形的程序)

自贡黄明儒 发表于 2018-5-21 11:17:27

http://bbs.mjtd.com/thread-177252-1-1.html 9楼

yxp 发表于 2018-5-21 11:27:41

大概有七种算法,比如
射线法,通过该点与多边形相交为偶数,在外面,奇数在里面。
角度法,计算该点与多边形个顶点夹角,等于360度在里面,小于360在外面
面积法,与各顶点连接的面积和等于多边形面积在里面,不等在外面
还有三角形法,圆弧法等等,自己练习一下,可以提高编程水平。

;;判断p点是否在P1,P2的矩形框内
(vl-every'>=(mapcar'*(mapcar'- p p1)(mapcar'- p2 p))'(0 0))

zzl9105 发表于 2018-5-21 16:00:05

yxp 发表于 2018-5-21 11:27
大概有七种算法,比如
射线法,通过该点与多边形相交为偶数,在外面,奇数在里面。
角度法,计算该点与多 ...

最好理解的是面积法,有相关的小表达式子么

zzl9105 发表于 2018-5-21 16:03:55

自贡黄明儒 发表于 2018-5-21 11:17
http://bbs.mjtd.com/thread-177252-1-1.html 9楼

不好意思,没看明白,谢谢你的指引,我再慢慢消化消化
页: [1]
查看完整版本: 简单判断点是否在闭合多边形内的小程序