
碰撞检测
黄建斌
我们坚持一件事情,并不是因为这样做了有效果,而是坚信,这样做是对的。
展开
-
《实时碰撞检测算法技术》读书笔记(三):计算逼近包围球
计算所有顶点的AABB获取一个逼近包围球第一步:获取各坐标轴上的6个端点(这里不理解,“各坐标轴上的6个端点”是什么?),可以选择其中间隔距离最远的两个顶点,这两个顶点的中心即为球心,且两顶点距离的一半则是球体半径。第二步:全部顶点再次循环。对于位于当前球体外部的所有顶点,该步骤将更新一个新球体包含原球体以及外部顶点。即相对于原球心,新球体的直径将延伸至外部顶点。 第一步的代码Mo原创 2014-02-17 21:56:33 · 1640 阅读 · 0 评论 -
《实时碰撞检测算法技术》读书笔记(九):球体与部分形体间的测试
球体与AABB间的测试利用点至AABB的最近值,计算圆心距离AABB最近距离并与半径进行比较,若距离小于半径则相交。计算最近平方距离//ComputethesquaredistancebetweenapointandanAABBbfloatSqDistPointAABB(Pointp,AABBb){floatsqDist=0.0f;原创 2014-04-19 21:46:19 · 1224 阅读 · 1 评论 -
《实时碰撞检测算法技术》读书笔记(六):最近点计算(下)
点至3D矩形的最近点实际上等同于计算OBB上的最近点,其中3D矩形可看做是z向为0的OBB。struct Rect { Point c; Vector u[2]; float e[2];}令z轴为0并重写函数ClosestPtPointOBB()//Given point p, return point q on (or in) Rect r,原创 2014-03-10 14:48:49 · 3177 阅读 · 0 评论 -
《实时碰撞检测算法技术》读书笔记(五):最近点计算(上)
点到面的最近距离一点P以及法线n定义了一个平面π,所有该平面上的点X都满足方程n·(X - P) = 0(即从点P指向X的向量垂直于n)。现令Q为空间内任意一点,则面内距Q的最近点R为点QQ在该面上的正交投影,即从顶点Q处向平面垂直(依据法线n)移动。同时,对于值t,有R = Q - tn,将该表达式代入平面方程求解t:将t代入到R = Q - tn并得到投影点R:原创 2014-03-04 23:09:43 · 2666 阅读 · 0 评论 -
《实时碰撞检测算法技术》读书笔记(八):平面与部分形体间的测试
球体与平面间的测试球体与平面间的测试原创 2014-04-15 23:23:41 · 1229 阅读 · 0 评论 -
《实时碰撞检测算法技术》读书笔记(七):分离轴测试
分离轴测试基于凸体:给定两凸体集A和B,若两集合不存在交集,则必定存在一个轴使得两凸体投影无重叠。若找不到该轴,则两凸体集相交。对于对称几何体如线段、AABB、OBB、球体等,其包含中心C且为投影轴上投影区间的中心位置,只需计算其投影区间的1/2宽度或半径,求和并于二中心投影间的距离进行比较,若和小于中心投影间距离,则物体对象处于分离。如下图:总体上讲,多面体对象间的分离测试需要考原创 2014-03-14 23:45:06 · 2089 阅读 · 0 评论 -
《实时碰撞检测算法技术》读书笔记(一):包围体(BV)
书籍:《实时碰撞检测算法技术》概述:在碰撞检测中,为减少计算消耗,在进行相交测试前,可以先进行粗略的包围体(BV)测试。对于某些应用程序,包围体测试足以提供碰撞检测依据。一般情况下,包围体计算须采用预处理而非实时计算。当包围体所包含的对象移动时,一些包围体需要实现空间重对齐。因此,若包围体的计算代价高昂,重对齐包围体就是一个更可取的方法。包围体的期望特征:A)低消耗的相原创 2014-02-16 02:58:38 · 7300 阅读 · 0 评论 -
《实时碰撞检测算法技术》读书笔记(二):轴对齐包围盒(AABB)的计算与更新
基于包围球的AABB 通过在任意方向上全包围物体对象,从而实现重构造AABB。且物体可以围绕球心P旋转:半径r为球心距离物体最远顶点的距离。若P与物体中心位置重合,则可保证当前球体半径为最小半径。 该表达方式优点之一是:在更新AABB过程中只需考虑平移变换,且可忽略旋转变换。然而包围球自身也具备上诉特征(优于AABB),因此在此例中包围球是更好的选择。基于原点的AA原创 2014-02-16 18:36:28 · 5953 阅读 · 0 评论 -
《实时碰撞检测算法技术》读书笔记(四):OBB计算
一种方法是,首先计算点集最小AABB。其中,选择包围盒中两个间距最大的平行面上的两个点,用以确认OBB的长度方向。于是,点集投影到垂直于OBB长度方向的平面上。采用相同的方法计算最小轴对齐矩形,且利用其中两个间距最大的平行面上的顶点计算OBB第2个轴。OBB的第3个轴则正交与前2个轴。虽然该算法易于编码,但实际应用中,常采用具有类似复杂度的其他算法获取(接近)最优包围盒。 基于PCA的OB原创 2014-02-27 20:18:23 · 3604 阅读 · 0 评论 -
凸多边形最小面积包围矩形
可以此计算2D图形的OBB计算几何中有这样一条结果:凸多边形的最小包围矩形至少有一条边与多边形的一条边共线。于是遍历每一条边构造包围矩形比较面积大小。说是构造包围矩形,其实只需要投影点到边以及垂直边上取距离最远两点距离得长宽后求面积即可。/* min value */#define FLT_MIN 1.175494351e-38F /* max value */#defi原创 2014-02-23 20:08:03 · 12003 阅读 · 13 评论