首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

求:线段分割多边形的算法解决思路

2012-04-11 
求:线段分割多边形的算法给定一个任意形状的不自交、封闭多边形(包括凸的和凹的)和一条线段,1.求线段和多边

求:线段分割多边形的算法
给定一个任意形状的不自交、封闭多边形(包括凸的和凹的)和一条线段,
1.求线段和多边形的交点个数。
2.保存分割后形成的所有的多变形。

谁有和上面类似的算法啊,麻烦告诉一下,谢谢了!!!

[解决办法]
这个问题并不复杂,不需要什么特别的算法:
1.最简单的办法,依次判断给出的线段和多边形的n条边是否相加(判断两线段是否相交总会计算吧?高效一些的可以用跨立法),就可以得到交点的个数;
2.由于你给出的是“线段”,所以存在只有一个交点的特殊情况,这时多边形没有被分割。
如果交点个数在2个或2个以上:
a)对于凸多边形来说,最多就2个交点。此时多边形被这两个交点连成的线段分割成了两个小的凸多变形;
b)对于凹多边形来说,情况要稍微复杂一点,因为交点连成的“割线”可能落在原来的多边形之外,需要对这种情况进行判断(判断两个交点的中点是否在原多边形内部,射线法、转角法...都可以)。然后按照顶点(包括交点)的顺序绕一圈,就可以得到分割后的所有多边形。
[解决办法]
因为第二问不是要保存多边形么,在里面的就成为了多边形的新的边,在外面的就不是!

探讨
引用:
b)对于凹多边形来说,情况要稍微复杂一点,因为交点连成的“割线”可能落在原来的多边形之外,需要对这种情况进行判断...

为什么要判断交点连成的“割线”是否落在多边形之外?

[解决办法]
画一下图就很清楚了,其实就是这个意思:


热点排行