正文

判断点是否在多边形中的方式2006-08-23 17:49:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/tujun/17834.html

分享到:

判断点是否在多边形中的方式:

搜索网络资源,发现判断点是否在多边形内的方式一般是以点为射线端点,向另一无穷远处做射线,判断此条射线与多边形各条边的相交情况,如果相交次数为奇数,认为点在多边形内或在多边形上,否则,认为点在多边形外.如图

这个方法无非就是判断相交次数.

具体操作时,可以简化一下:

看上图,如果要判断p1x,p1y点是否在多边形内,只需要取能够与之相交的线段进行判断而已.我这里恒认为x轴为0,y轴与测试点相同的点为射线的另一段,那么,只有y值在测试点p1y上下的线段才是我们要测试的线段,比如上图中的x3,y3x4,y4,那么有此条件,判断设想是否和x3y3x4y4相交无非就是判断p1.X > Max(x3.X,x4.X)而已,如果成立,则射线与x3y3x4y4线段相交,如果线段的两个端点的Y值均大于或均小于p1Y,则无判断的必要.因为它们不可能相交.

如果是p2xp2y的情况则需要做跨立判断,因为p2x介于x4xx5x之间,p2y介于x4yx5y之间.

假设,p2x4x5相交,那么它们的交点tmpPX必定小于p2X,tmpY必定等于p2Y,

我们做x4y4x5y5的直线方程:

ax + by + c = 0

a = y5-y4

b = x5-x4

c = (x5-x4)y4 –(y5-y4)x4

y=p2Y;

那么x = (x5-x4)p2Y + ((x5-x4)y4 –(y5-y4)x4)/(y4-y5)

如果x < p2X,那么两线相交,否则两线不相交.

阅读(4938) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册