[笔记]物理碰撞整合

碰撞总结
点积:两个向量之间的夹角,投影
叉积:两向量组成的平行四边形的面积,两向量的前后关系(方向)

dot(a,a)得到a的长度平方
行列式:体积,行列式转为矩阵公式用克莱姆公式求解
叉积转点积:拉格朗日公式
多边形划分:v域,质心划分,边延长线划分
判断点是否在三角形内,可以判断点是否在所有的面的左边
质心:三个点的为面积比,四个点的为体积比
射线相交:
    以时间t代入求解
    以一元二次方程的思想求解,判断是否有根已经是否合法

1.直线运动的AABB,原则上是进行8条射线的碰撞检测,这个算法主要应用于角色的高速移动
3,子弹用射线检测
3.圆和直线的碰撞可以转变为=>直线和圆的并集得到一个胶囊体,圆只取圆心点,求圆心点和胶囊体的碰撞,也可以看成点和线段的碰撞判定
4.2个任意形状的物体求是否相交,可以将2个物体的点集进行差集计算,若结果集合中有(0,0,0)点代表相交(因为相交则一点有点重合,相交点的差为0)
5.AABB数据结构记录方法:
    最小点,最大点
    最小点,各个轴长度
    中心点,各个轴半径
6.碰撞穿透问题
    扫掠形状,两帧之间物理的位置连接形成的形状
    连续检测,使用位置插值,前后两个位置间,使用时间插值,可以增加精度
7.胶囊体和球-》线段和球
8.球和线段是否相交,可以看成是球心在线段上的投影,投影值大于0且投影终点和球心距离小于球半径则相交
9.比较平方,避免开方
10.线段和平面最近点:
11.求点到obb的距离
    显示求出最近点:先将点转换到obb的本地坐标上,之后就转变为了求点到AABB的最近点,之后再求点到最近点的距离
    不显示求出最近点:用voronoi域,若点落在顶点域,则距离为点到点的距离。若落在边域,则距离为点到线段的距离。若落在面域,则距离为点到面的距离
12.线段和直线的距离
    线段和直线之间最近点构成的线段一定垂直于原来的直线和线段
13.判断点是否在凸多边形内
    点对凸多边形每个顶点之间建立一个线段2D向量,该向量与其对应的顶点的边进行叉乘,得到一个叉积值。
    若每个叉积值的符号都一样(都是正数/都是负数),则证明点在凸多边形内。
    否则,则证明点不再凸多边形内
14.判断点在平面前后算法:平面的法向量为(A,B,C),则平面方程为:Ax+By+Cz+D=0
    将点(x0,y0,z0)代入方程,得distance=Ax0+By0+Cz0+D
    若distance<0,则在平面背后
    若distance=0,则在平面中
    若distance>0,则在平面前方
AABB,OOBB 最近点
直线和线段最近点
最近点问题-三角形和拉格朗日公式优化
    点到三角形最近点可以用v域去判断落在哪个域,同时用拉格朗日算法优化叉积
最近点问题-三角形&线段,三角形和三角形分析
分离轴算法应用:obb和obb碰撞
    检

你可能感兴趣的:(笔记)