gjk
GJK算法
GJK(Gilbert-Johnson-Keerthi)算法 背景知识 凸多边形 定义:对于平面上的一个多边形,如果延长它的任意一条边,使整个多边形都位于延长线的同侧,这样的多边形为凸多边形 显然,人可以直观的判断一个多边形是否为凸多边形,那么在程序中,应该如何判断一个多边形是否为凸多边形 利用向量 ......
GJK算法理论
原理 GJK算法的核心就是闵可夫斯基差,即若两个多边形相交,则它们的闵可夫斯基差必然包括原点。 闵可夫斯基差 用多边形A的所有点,减去多边形B中所有的点得到的一个点集合(是点之间两两相减后得到的集合,而不是做集合的差集)。A–B = {a–b∣a ∈ A, b ∈ B} 在碰撞检测中,不会用到完整的 ......
gjk算法
效果 单形体 class Simplex { private List<Vector2> m_PointList = new List<Vector2>(); public void Add(Vector2 p) { m_PointList.Add(p); } public Vector2 Get( ......
GJK算法:两个凸集的碰撞测试
GJK算法用于判断两个凸集是否相交,其中GJK是三个提出者的姓名首字母。为了便于理解(偷懒),下面的内容都只在二维平面内讨论。 回顾凸集 可能有很多小伙伴忘了什么是凸集。凸集的定义有很多种,最常用的一种是在集合中任取两点,连接这两点的线段一定在此集合内。很多常见的形状,例如三角形、矩形、圆、椭圆,都 ......