EPA论文解析
本文是Gino van den Bergen写的EPA1论文解析。
GJK算法只能获得两个不相交物体之间的距离以及最近点对,或者判断两个物体是否相交。但在相交时无法确定穿透深度和挤出距离。使用EPA可以解决这个问题。
本论文的大部分前置知识都基于Gino之前写的GJK优化论文。建议先看。此论文中也有对这些知识的回顾,但本文不再赘述。
本文是Gino van den Bergen写的EPA1论文解析。
GJK算法只能获得两个不相交物体之间的距离以及最近点对,或者判断两个物体是否相交。但在相交时无法确定穿透深度和挤出距离。使用EPA可以解决这个问题。
本论文的大部分前置知识都基于Gino之前写的GJK优化论文。建议先看。此论文中也有对这些知识的回顾,但本文不再赘述。
本文是《A Fast Robust GJK Implementation for Collision Detection of Convex Object》1论文的解读。
此论文基于GJK原始论文2。阅读本文前也可阅读原始论文,或阅读我这篇的原始论文解析。
由于这篇论文是Gino Van Den Bergen写的。我后文中就称其为GinoGJK。
GinoGJK是目前游戏物理引擎中广泛采用的GJK实现。此论文的代码在Github3。几乎是现代GJK的标准实现。十分建议参考。本论文也是偏工程向的,看起来比原始GJK论文舒服很多。
本论文的算法假定在$R^3$下。但可以推广到$R^n$。
Gino Van Den Berge这个人也有著作《Collision Detection in Interactive 3D Environments》4。里面详细描述了此论文的GJK实现(以及后续他发布的带有Margin的GJK和EPA的论文实现)。
本文是对GJK原始论文1的解析。着眼于GJK算法本身的正确性证明,以及阐述数值上的缺陷。补充了一些原论文中证明的省略步骤。
建议看过更白话的文章中的GJK,了解GJK整体算法流程之后再看。
本文说明了游戏开发中的寻路算法。从BFS到Dijkstra到A*以及A*的变体等。
大部分参考这篇由浅入深的文章1
这一章描述了GJK和EPA算法。首先描述了市面上大部分资料说明的通俗的GJK和EPA算法。然后给出了GJK论文的解析。
这一章描述了判交和MTD算法,包括SAT等。
这一章描述了各种几何体的最近点计算
大部分的算法在参考一节的公式大全中都有详细推导。我只记录一些较难理解的。
这一章描述了各种几何体表示法,以及BV构建。
这一章描述了物理引擎的结构,并对整个系列文章的路线进行介绍
在使用C++ atomic原子变量的时候,需要指定内存序(memory order),比如memory_order_relaxed,memory_order_acquire等。我一直没搞明白这些内存序是在做什么。这几天深入理解了一下于是写下这份文章。