Java:将非奇异的Java.awt.geom.area分割为不同的奇异区域

Java:将非奇异的Java.awt.geom.area分割为不同的奇异区域,java,swing,geometry,awt,Java,Swing,Geometry,Awt,为谷歌编辑:我找到了答案。我无法编写明确的代码,但步骤如下: 创建大的非奇异区域(例如,减分或相交的结果) 如果是单数,则执行普通代码 其他: 创建一个ArrayList,将所有节放置到 创建路径迭代器(iter) 创建路径2D(路径) 而不是iter isDone(在循环结束时使用iter.next()) 创建双[2](coordsArray)数组以放置坐标 创建int(coords),当前段或iter。coordsArray永远是arg 如果是开关, 当iter类型为SEG_MOVE

为谷歌编辑:我找到了答案。我无法编写明确的代码,但步骤如下:

  • 创建大的非奇异区域(例如,减分或相交的结果)
  • 如果是单数,则执行普通代码
  • 其他:
    • 创建一个ArrayList,将所有节放置到
    • 创建路径迭代器(iter)
    • 创建路径2D(路径)
    • 而不是iter isDone(在循环结束时使用iter.next())
      • 创建双[2](coordsArray)数组以放置坐标
      • 创建int(coords),当前段或iter。coordsArray永远是arg
      • 如果是开关,
        • 当iter类型为SEG_MOVETO时,将路径移动到存储在coordsArray索引0,1中的坐标(x,y)
        • 当类型为SEG_CLOSE时,创建新区域,路径为arg,添加到节数组中,然后是path.reset
        • 否则,您的路径必须行到coordsArray中的coords存储,而不是moveTo
您将得到一个由这些小区域组成的新阵列。Iter遍历这个数组,并在上面执行//normalCode,就好像它们最初是单数数组一样

//结果结束编辑//

//初始问题

我从作为边界的较大区域上的intersect()结果中得到小区域。它种植小面积的作物。有时,它会导致区域被分割为两个或多个彼此不接触的部分,但作为1个区域计算,isSingular()返回false

我需要得到这些不同部分的bounds2D()的各个维度,所以我需要将它们分割成不同的区域。我想我可以用PathIterator来完成,但是我似乎找不到一种方法来区分各个部分。我已经丢弃了isEmpty()区域,因此如果某个区域中有“孔”,则可以创建单独的孔区域,之后将丢弃它们

有可能吗

谢谢

编辑:澄清

我创建小矩形区域。然后我用一个较大的、不规则的多边形作为这些较小区域的边界相交()。由于边界的不规则形状,我的矩形最终也会被裁剪成不规则的多边形。那很好。但有时,它可以把它切成两半,在任何一点上都不接触。然后,这两部分仅算作1个区域。我不想那样。我想把这个区域分成两部分,然后用它们划分出两个不同的区域


基本上,当[].[]==bigArea时,我想做[],[]=smallArea1,smallArea2。

我不清楚你的问题。在分割区域后,你具体在努力解决什么问题?在主要帖子中增加了澄清。问题是我一开始无法分割这些区域。我得到一个单区域对象,由多个不接触的部分组成,因为有减法(相交)。我希望每个部分都成为自己的领域。这个问题没有简单的答案。您可能想查看openCV,看看这是否有助于您标记此JavaFX的原因是什么?Swing和JavaFX是不同的API。