Algorithm 圆和多边形情况下的GJK算法
我想知道是否有可能修改GJK,这样我就可以用它来检测圆和n个多边形点之间的碰撞Algorithm 圆和多边形情况下的GJK算法,algorithm,collision,Algorithm,Collision,我想知道是否有可能修改GJK,这样我就可以用它来检测圆和n个多边形点之间的碰撞 我以前实现过多边形和多边形,并尝试修改支持函数(以获得圆的最远点),但显然,这会导致无限循环 这可能吗?我是否需要更改除支持功能以外的其他功能?(因为我没有看到任何) 这里是我用来得到圆中最远点的东西,顺便说一句 maxPointCircle = new Vector2(circle.center).add(new Vector2(direction).mul(circle.radius)); GJK算法实际上告诉
我以前实现过多边形和多边形,并尝试修改支持函数(以获得圆的最远点),但显然,这会导致无限循环
这可能吗?我是否需要更改除支持功能以外的其他功能?(因为我没有看到任何)
这里是我用来得到圆中最远点的东西,顺便说一句
maxPointCircle = new Vector2(circle.center).add(new Vector2(direction).mul(circle.radius));
GJK算法实际上告诉您两个多边形之间的最小距离(当距离为0时,表示碰撞)。 因此,对于多边形和圆,可以使用GJK找到该多边形和圆的中心点之间的最小距离,然后将该距离与圆的半径进行比较。如果距离小于或等于半径,则为碰撞 算法如下所示:
collision(polygon1, circle):
polygon2 = dummy polygon of only one point, which is the center of the circle
distance = GJK(polygon1, polygon2)
if distance <= circle.radius:
return true
else:
return false
碰撞(多边形1,圆):
polygon2=只有一个点的虚拟多边形,该点是圆的中心
距离=GJK(多边形1,多边形2)
如果距离GJK算法实际上告诉您两个多边形之间的最小距离(当距离为0时,表示碰撞)。
因此,对于多边形和圆,可以使用GJK找到该多边形和圆的中心点之间的最小距离,然后将该距离与圆的半径进行比较。如果距离小于或等于半径,则为碰撞
算法如下所示:
collision(polygon1, circle):
polygon2 = dummy polygon of only one point, which is the center of the circle
distance = GJK(polygon1, polygon2)
if distance <= circle.radius:
return true
else:
return false
碰撞(多边形1,圆):
polygon2=只有一个点的虚拟多边形,该点是圆的中心
距离=GJK(多边形1,多边形2)
如果距离