2
\$\begingroup\$

When I try to create a triangle collider for my game it sometimes leads to an assertion fail. I use the physics engine that comes with love2d (Box2D). That's the error message that appears when the assertion fails:

love: modules/physics/box2d/Source/Collision/Shapes/b2PolygonShape.cpp:85: b2Vec2 ComputeCentroid(const b2Vec2*, int32): Assertion `area > 1.19209289550781250000e-7F' failed.

Here's an example of a triangle that doesn't cause the error (represented by a table with 3 points): {{258,451},{740,767},{284,597}}

And this one leads to a crash: {{258,450},{222,569},{306,723}}

The bodies of both shapes lie at {0, 0} (upper-left corner of the screen)

Does anyone know a possible reason and/or solution for the problem?

Edit: I'm not allowed to answer my question right now for some reason so I'll post the answer here before I've forgotten it: In Box2D, the order of placement of vertices seems to play an important role, since I was able to avoid the crash with the "problematic" triangle in my example from my question just by placing the first vertex between the second and the third one. Maybe I'll repost the answer when I'm able to provide more information (and am also allowed to do so)

\$\endgroup\$
  • 2
    \$\begingroup\$ Since LOVE is still fairly unknown, you'd probably get a better answer either on their website's forums or on their Bitbucket repository. \$\endgroup\$ – mkosler Mar 4 '12 at 0:16
  • \$\begingroup\$ yes, but the error occurs in Box2D code but thanks, I'll ask on their site too \$\endgroup\$ – c0f33.alex Mar 4 '12 at 0:30
3
\$\begingroup\$

You have to create polygons with a counter clockwise winding in box2d. Have a look at the box2d manual, section 4.4 http://www.box2d.org/manual.html#_Toc258082970

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.