如何实现Area.contains(Area)?

时间:2012-01-18 13:07:37

标签: java geometry polygon area

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

我试过了:

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

但它并不总能正常工作(如果 area2 的界限位于 area1 的界限,则返回true,应返回false)。

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

有什么想法吗?

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

1 个答案:

答案 0 :(得分:1)

由于你有Polygon.contains(Point),你可以通过测试第二个多边形的每个点是否在第一个多边形内部来实现你所需要的(我梦想JDK版本可以实现程序员的每个基本需求,像.NET)。

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