Java多边形和区域

时间:2012-09-05 04:16:59

标签: java awt polygon java-2d area

好的,我有很多多边形(图中用白色标出)。

尝试将所有多边形添加到一起,以便得到一个多边形,这是所有多边形的外边界,我已将每个Polygon(java类)转换为Area(java类),然后添加区域与Area类提供的add(Area a)方法一起使用。

从那里我将区域转换回多边形并将其绘制为填充的多边形(图像中的紫色区域)。

然而,这并不是我所期待的。任何人都可以想到我可以正确地做到这一点,或者至少只是将三角形区域添加到我的多边形?

当我只用填充绘制所有单独的多边形时,我得到了我想要的(绘制的),但我需要它的多边形表示。

What I want

1 个答案:

答案 0 :(得分:0)

我可以建议使用JTS。只需创建要组合的几何图形,然后使用union方法。之后,您可以使用新几何体并使用之前的代码进行绘制。 union的简单代码示例:

// build polygon p1
Polygon p1 = new GeometryFactory().createPolygon(new Coordinate[]{new Coordinate(0,0), new Coordinate(0,10), new Coordinate(10,10), new Coordinate(10,0), new Coordinate(0,0)});
// build polygon p2
Polygon p2 = new GeometryFactory().createPolygon(new Coordinate[]{new Coordinate(0,0), new Coordinate(0,30), new Coordinate(5,30), new Coordinate(5,0), new Coordinate(0,0)});
// calculate polygon3 as the union of p1 and p2
Polygon p3 = (Polygon) p1.union(p2);
// print simple WKT
System.out.println(p3.toText());

在这种情况下的输出(如预期的那样):

POLYGON ((0 0, 0 10, 0 30, 5 30, 5 10, 10 10, 10 0, 5 0, 0 0))