如何比较LibGDX多边形形状?

如何比较LibGDX多边形形状?,libgdx,box2d,equals,Libgdx,Box2d,Equals,如何检查一个多边形形状是否与另一个相同.equals()不起作用。此代码不打印“等于” 对于PolygonShape类,没有预定义的equals函数,但是编写自己的函数并不难。详情如下: boolean polygonEqual(PolygonShape a, PolygonShape b) { int n = a.getVertexCount(); //If the two shapes have differing numbers of vertices they can'

如何检查一个多边形形状是否与另一个相同
.equals()
不起作用。此代码不打印“等于”


对于
PolygonShape
类,没有预定义的
equals
函数,但是编写自己的函数并不难。详情如下:

boolean polygonEqual(PolygonShape a, PolygonShape b) {
    int n = a.getVertexCount();

    //If the two shapes have differing numbers of vertices they can't be equal
    if (n != b.getVertexCount()) return false;

    //Check if all the vertices are equal
    Vector vA, vB;
    for (int i = 0; i < n; i++) {
       a.getVertex(i, vA);
       b.getVertex(i, vB);

       if (!a.equals(b)) return false;
    }

    //Now they must be equal
    return true;
}
布尔多边形相等(多边形形状a,多边形形状b){
int n=a.getVertexCount();
//如果这两个形状的顶点数不同,它们就不可能相等
如果(n!=b.getVertexCount())返回false;
//检查所有顶点是否相等
向量vA,vB;
对于(int i=0;i

注意:仅当顶点顺序相同时,此操作才有效。可能的情况是,相同的顶点位于两个不同的多边形中,但通过某些索引移动。但是,由于您的示例仅使用了
setAsBox
,因此此函数应足以作为比较。

对于
PolygonShape
类,没有预定义的
equals
函数,但编写自己的函数并不难。详情如下:

boolean polygonEqual(PolygonShape a, PolygonShape b) {
    int n = a.getVertexCount();

    //If the two shapes have differing numbers of vertices they can't be equal
    if (n != b.getVertexCount()) return false;

    //Check if all the vertices are equal
    Vector vA, vB;
    for (int i = 0; i < n; i++) {
       a.getVertex(i, vA);
       b.getVertex(i, vB);

       if (!a.equals(b)) return false;
    }

    //Now they must be equal
    return true;
}
布尔多边形相等(多边形形状a,多边形形状b){
int n=a.getVertexCount();
//如果这两个形状的顶点数不同,它们就不可能相等
如果(n!=b.getVertexCount())返回false;
//检查所有顶点是否相等
向量vA,vB;
对于(int i=0;i

注意:仅当顶点顺序相同时,此操作才有效。可能的情况是,相同的顶点位于两个不同的多边形中,但通过某些索引移动。但是,由于您的示例仅使用了
setAsBox
,因此此函数应足以作为比较。

好的,因为
equals
方法不会在
PolygonShape
类中被重写。如果您真的需要比较它们,我会在GitHub上提出一个问题。我可能会尝试找到解决方法。这可能很容易发生,'cos
equals
方法在
PolygonShape
类中未被重写。如果您真的需要比较它们,我会在GitHub上提出一个问题。我可能会尝试找到解决方法。这可能很容易找到解决办法。实际上整个算法现在简单多了。在添加新的夹具之前,我想检查一个实体中是否已经存在一个具有给定形状的夹具:if(body.getFixtureList().get(I).getShape().equals(shape))…我现在只是从我的shapeList中删除实体中已经包含的形状,因此无法多次找到它们。已经找到了解决方法。实际上整个算法现在简单多了。在添加新的夹具之前,我想检查一个实体中是否已经有一个具有给定形状的夹具:if(body.getFixtureList().get(I).getShape().equals(shape))…我现在只是从我的shapeList中删除实体中已经包含的形状,因此无法多次找到它们。