J'utilise le moteur physique Box2D. Et il existe un type de forme pour box2D appelé b2PolygonShape.
Dans cette classe, vous pouvez créer des polygones. Il existe également une fonction Set () qui prend un tableau de points et un nombre de sommets.
Box2D a un exemple comme celui-ci:
// This defines a triangle in CCW order.
b2Vec2 vertices[3];
vertices[0].Set(0.0f, 0.0f);
vertices[1].Set(1.0f, 0.0f);
vertices[2].Set(0.0f, 1.0f);
int32 count = 3;
b2PolygonShape polygon;
polygon.Set(vertices, count);
Cela marche. Pourtant, quand j'ai essayé de pratiquer et de jouer avec cette fonction, j'ai fait ceci:
b2Vec2 vertices[4];
vertices[0].Set(0, 0);
vertices[1].Set(0,10);
vertices[2].Set(10,10);
vertices[3].Set(10,0);
int32 count = 4;
b2PolygonShape polygon;
polygon.Set(vertices, count);
Lorsque j'ai compilé et exécuté cela, il s'est écrasé après la fonction Set (). Cela ne créerait-il pas un carré?
Aussi dans la console, j'ai obtenu ceci:
Assertion failed: s > 0.0f
Qu'ai-je fait de mal?