如何将存储在 ArrayList 中的复杂形状与 Geomerative Library 合并

How Can I merge complex shapes stored in an ArrayList with Geomerative Library

我存储了这个class的形状:

class Berg{
  int vecPoint;
  float[] shapeX;
  float[] shapeY;

  Berg(float[] shapeX, float[] shapeY, int vecPoint){
    this.shapeX = shapeX;
    this.shapeY = shapeY;
    this.vecPoint = vecPoint;
  }

  void display(){
    beginShape();
      curveVertex(shapeX[vecPoint-1], shapeY[vecPoint-1]);
      for(int i=0;i<vecPoint;i++){
        curveVertex(shapeX[i], shapeY[i]);
      }
      curveVertex(shapeX[0],shapeY[0]);
      curveVertex(shapeX[1],shapeY[1]);
    endShape();
  }
}

在一个 ArrayList 中

shapeList.add(new Berg(xBig,yBig,points));

形状由八个 (curveVertex-) 点(xBig 和 yBig)定义,围绕随机定位的中心形成一个形状。 检查形状是否相交后,我想合并彼此重叠的形状。我已经可以检测到交叉路口,但很难管理合并。

我读到库 Geomerative 有一种方法可以用 union() 做类似的事情,但需要 RShapes 作为参数。 所以我的问题是:如何将我的形状更改为所需的 RShape 类型?或者更笼统(也许我犯了一些整体错误):How Can I merge complex shapes stored in an ArrayList with or without Geomerative Library?

查看 RShape 的 API:http://www.ricardmarxer.com/geomerative/documentation/geomerative/RShape.html

列出了可用于从一系列点创建 RShape 的构造函数和方法。它可能看起来像这样:

class Berg{
  public RShape toRShape(){
    RShape rShape = new rShape();
    for(int i = 0; i < shapeX; i++){
      rShape.addLineto(shapeX[i], shapeY[i]);
    }
  }
}