G J K GJK GJK和 S A T SAT SAT一样用于检测凸多边形,和 S A T SAT SAT不同, G J K GJK GJK可以处理任意形状的凸多边形,然而 S A T SAT SAT处理圆的碰撞检测时需要用不同的算法。
1. Minkowski Sum(明可夫斯基和)
G J K GJK GJK是基于 M i n k o w s k i Minkowski Minkowski S u m Sum Sum概念上的,即形状1的所有点和形状2的所有点之和。
A + B = { a + b ∣ a ∈ A , b ∈ B } A + B = \{a + b | a \in A, b \in B \} A+B={
a+b∣a∈A,b∈B}
如果 s h a p e A shape A shapeA和 B B B是凸的,则它们的和也是凸的
相应的可以定义它们的差运算:
A − B = { a − b ∣ a ∈ A , b ∈ B } A - B = \{a - b | a \in A, b \in B \} A−B={
a−b∣a∈A,b∈B}
如果两个形状重叠,进行 M i n k o w s k i Minkowski Minkowski S u m Sum Sum后的形状包含原点。 M i n k o w s k i Minkowski Minkowski S u m Sum Sum的运算是 s h a p e shape shape A A A的每个顶点和 s h a p e shape shape B B B的所有顶点求和(或求差)。所得到点的外包络即是运算所得形状。


2. Simplex
单纯形是代数拓扑中的基本概念,单纯形是三角形和四面体的一种泛化,一个 k k k维单纯形是指包含 ( k + 1 ) (k+1) (k+1)个节点的凸多面体。不需要计算

GJK(Gilbert–Johnson–Keerthi)算法是一种用于检测任意凸形状碰撞的方法,与SAT不同,它能处理包括圆在内的各种形状。算法基于Minkowski和的概念,通过构建Simplex和support函数判断两个形状是否重叠。support函数找到Minkowski和的最远点,Simplex则是逐步构建的多边形,如果Simplex包含原点则表示碰撞发生。
最低0.47元/天 解锁文章
1632

被折叠的 条评论
为什么被折叠?



