我试图弄清楚在Java中计算两个任意多边形的重叠区域的最佳方法是什么。
以下是我迄今为止所做的研究:
有关多边形的更多详细信息:
有没有办法在Java中实现此任务而无需下载外部库? 我想到的唯一解决方案是通过找到边界矩形,使用Area的contains函数,然后找到这两个集合的联合来为两个内点创建。这个解决方案的问题在于效率非常低。
答案 0 :(得分:0)
您需要适用于非凸多边形的多边形裁剪算法。一些已知的算法:
Vatti's algorithm,适用于Clipper库中使用的任意多边形,包括复杂多边形
Greiner-Hormann algorithm,页面包含指向某些实现的链接