2015-10-27 74 views
1

我想知道是否可以修改GJK,以便我可以使用它来检测圆与n点多边形之间的碰撞。
我之前实现了多边形和多边形,并且我尝试修改支持函数(以获得圆的最远点),但显然这导致无限循环。
这可能吗?我需要改变支持功能以外的其他东西吗? (因为我没有看到任何)

下面是我用了一圈获得最远点BTW圆形和多边形GJK算法

maxPointCircle = new Vector2(circle.center).add(new Vector2(direction).mul(circle.radius)); 

回答

0

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