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