【发布时间】:2016-04-14 18:45:31
【问题描述】:
我最近在 stackoverflow 上找到了代码,用于处理多边形和圆形之间的碰撞,并且可以正常工作。问题是因为我不太了解它,所以如果有人能给我简单的解释,我会很感激。
// Check if Polygon intersects Circle
private boolean isCollision(Polygon p, Circle c) {
float[] vertices = p.getTransformedVertices();
Vector2 center = new Vector2(c.x, c.y);
float squareRadius = c.radius * c.radius;
for (int i = 0; i < vertices.length; i += 2) {
if (i == 0) {
if (Intersector.intersectSegmentCircle(new Vector2(
vertices[vertices.length - 2],
vertices[vertices.length - 1]), new Vector2(
vertices[i], vertices[i + 1]), center, squareRadius))
return true;
} else {
if (Intersector.intersectSegmentCircle(new Vector2(
vertices[i - 2], vertices[i - 1]), new Vector2(
vertices[i], vertices[i + 1]), center, squareRadius))
return true;
}
}
return false;
}
我不明白的部分是 for 循环。
【问题讨论】:
-
确保检查圆是否包含在多边形内。 stackoverflow.com/a/29938608/2900738
标签: libgdx polygon collision geometry