下载源程序
几何检测(6) 摘要: 前面都提到了cAABB3类,它代表的是3D中的轴对齐矩形边界框(AABB),这里给出类的完整定义和实现。
几何检测(5) 摘要: 检测两个静止AABB的相交性是很简单的,只需要在每一维上单独检查它们的重合程度即可。如果在所有维上都没有重合,那么这两个AABB就不会相交。intersectAABBs()就是用这项技术来实现的。
AABB间的动态测试稍微复杂一些。考虑一个由极值点smin和smax定义的静止AABB和一个由mmin和mmax定义的运动AABB。运动AABB的运动由向量d给出,t从0变换到1。
几何检测(4) 摘要:
球和平面的静态检测相对容易一些,可以用公式12.14来计算球心到平面的距离。如果距离小于球半径,那么它们相交。实际上还能作一种更灵活的检测,这种检测把相交分为球完全在平面正面,完全在背面,跨平面等三种情况。仔细分析程序清单13.2:
几何检测(3) 摘要: 考虑3D中由极值点pmin和pmax定义的AABB和以标准方式定义的平面:p . n =
d,其中n为单位向量,平面与AABB必须处于相同的坐标系中。
一种简单的静态测试方法是,计算矩形边界框顶点和n的点积,通过比较点积和d,来检测边界框的顶点是否完全在平面的一边,或是在另外一边。如果所有点积都大于d,那么整个边界框就在平面的正面所指的一侧;如果所有的点积都小于d,那么整个边界框就在平面的反面所指的一侧。
几何检测(2) 摘要:
相交性测试的目的是检测两个几何图元是否相交,在某些情况下还要求出相交部分,这些基本测试构成了碰撞检测系统的基础。碰撞检测用来防止物体互相穿越,或者使物体看起来好像互相被弹开。
我们将讨论两种不同类型的相交性测试:
(1)静态测试检测两个静止图元是否相交。它是一种布尔型测试----也就是说,测试结果只有真(相交时)或假(不相交时)。如果两个图元相交,则可以获取更多的信息。但一般来说,这种测试的目的只是返回一个布尔值。
几何检测(1) 摘要: 考虑2D中的直线L,L由所有满足p . n = d的点p组成。
其中n是单位向量,我们的目标是对任意点q,找出直线L上距q距离最短的点q',它是q投影到L上的结果。让我们画一条经过q平行于L的辅助线
M,如图13.1所示。设nM和dM分别为直线方程的法向量和d值。因为L和M平行,所以它们的法向量相等:nM=n。又因为q在M上,所以dM为 q.n。