我存储了这个类的形状:
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类型?或者更一般(也许我做了一些整体错误):如何使用或不使用Geomerative Library合并存储在ArrayList中的复杂形状?
答案 0 :(得分:1)
查看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]);
}
}
}