【问题标题】:Java polygons and AreaJava 多边形和区域
【发布时间】:2012-08-29 18:11:54
【问题描述】:

好的,所以我有许多多边形(在图像中以白色勾勒)。

为了将所有多边形加在一起,得到一个多边形,这是所有多边形的外边界,我将每个多边形(java 类)转换为区域(java 类),然后添加区域以及Area类提供的add(Area a)方法。

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

然而,这不是我所期望的。谁能想到我可以正确地做到这一点,或者至少只是将三角形区域添加到我的多边形中?

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

【问题讨论】:

  • 你可能是色盲吗?这在我看来不是紫色的!另外,如果这不是您所期待的,那么您您期待什么?
  • 我没想到会出现在第一张图片(顶部)中。我期待第二张图片(底部一张,中间没有出现在顶部的三角形间隙)。
  • 如需尽快获得更好的帮助,请发帖SSCCE
  • 可能是一个令人费解的问题......不幸的是,这就是我能说的全部:P
  • 如果填充添加的区域会发生什么? (在转换回多边形之前)

标签: java awt polygon java-2d area


【解决方案1】:

我可以推荐使用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))

【讨论】:

    猜你喜欢
    • 2012-11-01
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多