0
我正在使用此代码创建在Box2D的(C++)的三角形形状的多边形:Box2D的(C++)三角形形状失败区域断言
b2FixtureDef fixtureDef;
b2PolygonShape dynamicPolygon;
b2Vec2 vertices[3];
vertices[0].Set(0, -1);
vertices[1].Set(-1, 1);
vertices[2].Set(1, 1);
dynamicPolygon.Set(vertices, 3);
fixtureDef.shape = &dynamicPolygon;
然而,在运行此代码,我得到这个错误:
a.out: ./Box2D/Collision/Shapes/b2PolygonShape.cpp:127: b2Vec2 ComputeCentroid(const b2Vec2*, int32): Assertion `area > 1.19209289550781250000e-7F' failed.
该区域似乎太小,但是,点应该做出正确的三角形?
任何想法?
可能是因为您使用的面积计算公式取决于顶点顺序。如果我们没有看到代码很难说,但考虑到错误信息以及如何解决它,这似乎是原因。 – Jepessen
我认为你最初有他们顺时针,但你必须把它们逆时针。这是box2d期望的方式。从用户手册:“多边形顶点存储与逆时针绕组(CCW)....” –
@PeterR但我认为他们*是*逆时针,现在顺时针... –