错过PolygonShape对象上的两个顶点

时间:2014-03-12 01:39:37

标签: java box2d

我对PolygonShape对象box2D有些麻烦。 我有8个顶点绘制代码:

float scaleW = width/12;
float scaleH = height/2;
chassisShape.set(new float[] {-scaleW*2,scaleH,  scaleW*2,scaleH,  scaleW*3,0,      scaleW*7,0,  scaleW*7,-scaleH,  -scaleW*5,-scaleH,  -scaleW*5,0,  -scaleW*3,0});

但这仅渲染6个顶点多边形。 2缺少顶点在哪里?

截图: http://imgur.com/QT05beN.png

也许我犯了一个错误,但我验证了很多时间,但我没有看到发生了什么。

感谢您的帮助!

编辑: 谢谢你的帮助。 也许我不明白什么是凸多边形,因为我很确定它是凸的:

我的原型屏幕:http://i.imgur.com/bR7nqVt.png

所以如果我尊重这个骨架,我的代码中的错误是什么? (逆时针?或者这也不凸?)

EDIT2:好的,我只是看到:如果角度大于180°,它是凹的,所以我必须改变形状,而不是三角测量。

2 个答案:

答案 0 :(得分:2)

多边形必须是凸的,而那个不是。理想情况下,它也应该逆时针缠绕,而那个不是。

enter image description here

在这样的情况下,Box2D将使用给定顶点的凸包,这就是为什么你得到了一个六边形多边形。

答案 1 :(得分:0)

您需要执行Delaunay三角测量(手动或使用某种算法)。

大多数渲染框架(Box2d,OpenGL,...)明确声明给定的多边形应该是凸的(即不包含凹槽。