Java 碰撞多边形与圆-Lingdx

Java 碰撞多边形与圆-Lingdx,java,libgdx,Java,Libgdx,我想检测多边形和圆何时碰撞。我认为另一种可能性是矩形,但这不可能,因为我想旋转矩形,那么解决方案是什么呢 谢谢LibGDX中有Intersector类,它应该可以满足您的需要。 libgdx.badlogicames.com/nightlies/docs/api/com/badlogic/gdx/math/Intersector.html 使用相交分段圆方法。 它确实将Vector2变量作为参数,因此必须使用Vector2存储点的x和y坐标-圆心和多边形顶点。 还有多边形和圆类,您可以使用它们将

我想检测多边形和圆何时碰撞。我认为另一种可能性是矩形,但这不可能,因为我想旋转矩形,那么解决方案是什么呢


谢谢

LibGDX中有Intersector类,它应该可以满足您的需要。 libgdx.badlogicames.com/nightlies/docs/api/com/badlogic/gdx/math/Intersector.html

使用相交分段圆方法。 它确实将Vector2变量作为参数,因此必须使用Vector2存储点的x和y坐标-圆心和多边形顶点。 还有多边形和圆类,您可以使用它们将坐标存储为矢量2

无论如何,假设已经有一组矢量2点描述的圆和多边形:

Vector2 circleCenter, PolyVertex1, PolyVertex2, PolyVertex3, ..., PolyVertexN;
多边形顶点之间有线段,必须检查这些线段是否与圆相交。因此,对于每对验证,检查:

intersectSegmentCircle(PolyVertex1, PolyVertex2, circleCenter, radius^2);
intersectSegmentCircle(PolyVertex2, PolyVertex3, circleCenter, radius^2);
...
intersectSegmentCircle(PolyVertexN-1, PolyVertexN, circleCenter, radius^2);
intersectSegmentCircle(PolyVertexN, PolyVertex1), circleCenter, radius^2);
返回true。如果是,则表示多边形和圆已合并

在某些情况下(小圆和大多边形),多边形边和圆之间不能相交,整个圆可以在多边形内。然后必须使用isPointInPolygon()方法。它将向量2(多边形顶点)和向量2(圆环中心)的数组作为参数。 所以,将多边形顶点存储在数组中,并检查isPointInPolygon是否返回true。如果是,则再次发生碰撞

Array <Vector2> PolyVertices;
...
isPointInPolygon(PolyVertices,circleCenter);
数组多顶点;
...
isPointInPolygon(多顶点,圆心);

不要复制并粘贴上述代码,因为缺少初始化等原因无法工作;)但我希望,这个想法是清楚的。

看到了,但我有一个问题,当我用多边形做时,它非常不精确,圆不停在线段上,但当我用矩形做时,它是精确的。“出什么问题了?”巴勃罗不知道。也许再见,如果你展示代码,有人会指出吗?