鉴于一堆凸起的多边形像一个房屋桁架一样,是否有办法计算空白区域,或者为每个洞穴中的每一个获得一个多边形"多边形之间?
我尝试从任何给定的多边形开始,然后找到多边形的某些线之间的交叉点,并且我不知道如何正确选择要用于交叉点的线。
然后我试图验证该区域的顺时针检测,但似乎我确定两条线的CW / CCW的算法不起作用,我认为,它的行为就像线条具有相同的原点而不是按顺序排列"来自彼此。
答案 0 :(得分:1)
根据评论,解决方案非常简单
1.prepare data
2.删除冗余线(粗线之间的连接边界)
3.查找所有闭环
这样的事情:
1.创建多边形列表
2.使用任何未删除的行
3.找到与最后一个多边形点匹配的点
4.goto 1
4.现在找到了带有最大边界框的多边形
5.现在总结其余的
答案 1 :(得分:0)
这不是一个简单的问题,因为需要使用一些交叉点和/或倒角/修剪规则逐步计算完整的几何体。
我想象两种方法:
1)自己构建一个所需几何操作的工具箱(使用解析几何),其中包括段/段交叉,可能还有其他一些(将映射到桁架设计规则);使用此工具箱,根据图片“手动”构造所有必需的多边形顶点;最后,使用通用公式http://en.wikipedia.org/wiki/Polygon#Area_and_centroid计算多边形孔的面积。
2)使用现成的多边形操作库,如Clipper(http://www.angusj.com/delphi/clipper.php),这将允许您绘制日志而不必太在意端点处的修剪(您将执行矩形的并集并得到一个带孔的多边形)。
在我理解你的问题后,第一种方法更好。
更新:
如果您拥有的是与每个日志对应的一组多边形,则答案是不同的:
如果您只关心空隙的总面积,请计算外部轮廓的面积并推导出每个日志的面积。
如果您需要单个孔的区域,则使用第二种方法:执行多边形的并集并查询孔。