有2个区域(java.awt.geom.Area)area1和area2。我需要验证area2是否在area1内? (区域1包含区域2)。

我努力了:

areaDelta = (Area)area1.clone();
areaDelta.add(area2);
return areaDelta.equals(area1);


但是它并不总是如预期的那样工作(如果area2的边界在area1的边界上,则返回true,应返回false)。

实际上,我有2个多边形(java.awt.Polygon),并且我需要Polygon.contains(Polygon)方法,可能对于区域而言可能更容易。

有任何想法吗?

多边形可以是凸的和非凸的。

最佳答案

由于您具有Polygon.contains(Point),因此可以通过测试第二个多边形的每个点是否在第一个多边形内来实现所需的功能(我梦想着一个JDK版本,它将实现程序员的所有基本需求,例如.NET )。

编辑:要处理凹面多边形,您首先需要将多边形拆分为凸面多边形,然后才能正确使用上述方法。我在one of my applications中使用了两种不同的多边形分解算法,建议您看一下它们的代码:


Bayazit Decomposer
Ewjordan Decomposer

10-04 11:46