5

第6-8课:分离轴算法(SAT)与碰撞检测(图文篇)

 3 years ago
source link: https://blog.csdn.net/orbit/article/details/108729339
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

物体的碰撞检测是游戏软件中的关键算法之一,两个角色是否能够对话、子弹是否击中了物体,以及是否出现人物穿墙的 bug,都依赖于一套可靠的碰撞检测算法。有很多算法可以实现碰撞检测,基于算法几何的方法有轴对称包围盒算法(Axis-aligned Bounding Box,AABB)、方向包围盒算法(Oriented Bounding Box,OBB)、分离轴算法(Separating Axis Theorem,SAT)、GJK 算法(Gilbert–Johnson–Keerthi Distance Algorithm)等。当然,也可以直接计算光栅图像的像素值来精确地判断物体是否发生了碰撞,这一课将介绍基于分离轴理论的分离轴算法。

算法几何基础

提到算法几何,很多读者会想到各种头疼的公式,放心,涉及本课内容的算法几何理论非常少,只需要知道向量的加法和减法(差)、点积、法向量和投影这四个简单的知识即可。

向量的加法和减法

什么是向量?简单地讲,它的数学意义就是既有大小又有方向的量,也被称为矢量,既然有方向,那就有二维向量和三维向量,这里我们只讨论二维向量。平面几何学意义的向量是一个端点有次序的线段,即有向线段(Directed Segment)。假如坐标原点是 $O(0, 0)$,点 $P$ 的坐标是 $(x, y)$,则线段 $OP$ 的向量表示就是 $P= (x,y)$。

假设有两个向量 $P{1} = ( x{1}, y{1} )$、$P{2} = ( x{2} , y{2}


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK