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
  • 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, 2012 at 0:16
  • \$\begingroup\$ yes, but the error occurs in Box2D code but thanks, I'll ask on their site too \$\endgroup\$
    – arov00
    Mar 4, 2012 at 0:30

1 Answer 1

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\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .