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但我認爲他們*是*逆時針,現在順時針... –