0
をアサート:BOX2D(C++)三角形状失敗領域Iは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しかし、私はそれらが*反時計回りであったと思っていましたが、今時計回りになっています... –