2.5D物理引擎01———包围体
在计算机图形学和计算几何领域,一组物体的保卫提就是将物体组合完全包容起来的一个封闭空间,将复杂物体封装在简单的包围体中,就可以提高集合运算的效率,通常简单的物体比较容易检查相互之间的重叠
一组物体的包围体也是包含一个物体及周围相关环境的封闭空间,因此可以用它来表示一个非空,有限的单一物体。
通常包围体可以用于碰撞检测中,由于包围体的几何形状较为简单,而物体通常是多边形或者简化为多边形近似的数据结构所组成,所以对于保卫提的检验通常要比对于物体本身的检验速度更快
包围体的常见类型:
一个应用程序中的包围体类型的选择受到不同的因素所影响:计算物体包围体所需的计算开销,物体移位,形状或者尺寸发生变化时在程序中更新所需开销以及相交检验所需精度。通常使用几种类型的组合,例如用来快速,大致检验的便宜方法与精确费用较高的方法组合在一起使用。
@1:包围球是一个包容物体的球面,在二维图形中,这是一个圆,包围球就用圆心及半径进行表示,包围球的检测速度非常快,当两个求新距离不超过半径之和就会相交,这样包围球就可可以用于物体可以向任意方向移动的场合
@2:包围柱是包容物体的圆柱,在多数应用程序中圆柱的轴与场景竖直方向相同,圆柱是只能绕着纵向轴旋转三维物体,而不能绕着其他轴线旋转,或者只能进行平移,两个轴线为竖直方向的援助只有当它们在竖值轴上的投影(即两条线段)以及在水平方向的投影(即两个圆)同时相交的时候,它们才相交,在视频游戏中,包围柱经常作为直立人物的包围体使用
@3:包围盒是一个包容物体的立方体或者二维长方形。在动态仿真中,对于大致是立方体的物体需要相当高的相交检验精度时,包围盒就会优于包围球或者包围柱,这样做的效果是很明显的,例如地面上停放的汽车这种一个物体放在另外一个物体上的场合,用包围球处理就会得到汽车与地面相交的,而使用包围盒就可以发现汽车与地面并不相交,这样就可以节省话费较大的检验
在许多应用程序中,包围盒按照坐标系的坐标轴进行排列,这被称为按坐标轴排列的包围盒(AABB),为了将AABB与通用的情况进行区分,有时将任意的包围盒称为定向包围盒(OBB)