首页> 中国专利> 一种基于直线投影的凸多面体碰撞检测方法

一种基于直线投影的凸多面体碰撞检测方法

摘要

本发明涉及一种基于直线投影的凸多面体碰撞检测方法,步骤1:输入两凸多面体顶点集;步骤2:输入两凸多面每个面的顶点索引;步骤3:利用中心线正投影分离检测方法检测两凸多面体是否分离,如果分离,转步骤10,否则,进入步骤4;步骤4:计算两凸多面体的面摩擦值;步骤5:按面摩擦值降序原则构造相向面集合;步骤6:将相向面集中的棱边取出,构造投影分离线簇,投影分离线簇个数为λ,令k=0;步骤7:如果k=λ,则转步骤10,否则令k=k+1,将凸多面体沿第k条棱在坐标平面做投影;步骤8:提取投影边界获得凸多边形;步骤9:判断凸多边形是否相交,如果分离,转步骤10,否则,转步骤7;步骤10:输出分离或碰撞结果。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-04-12

    授权

    授权

  • 2014-12-17

    实质审查的生效 IPC(主分类):G06F17/50 申请日:20140731

    实质审查的生效

  • 2014-11-19

    公开

    公开

说明书

技术领域

本发明涉及一种基于直线投影的凸多面体碰撞检测方法。

背景技术

碰撞检测在计算机图形学、虚拟装配、系统仿真、机器人路径设计等领域都 有广泛的应用。由于任意物体均可表示成凸多面体的组合,因此实时准确的凸多 面体碰撞检测方法对于复杂环境下多个物体的碰撞检测具有重要意义。

现有凸多面体碰撞检测方法多采用包围盒法、基于图形硬件的方法、线性规 划法或分离面法等。现有凸多面体碰撞检测方法存在的不足之处在于:一是不能 满足任意凸多面体碰撞检测的要求,二是碰撞检测过程中不能实时准确的给出检 测结果,例如分离面法,通过凸多面体向二维坐标平面投影的方法,将3D空间 凸多面体的相交问题转换为2D平面凸多边形的相交问题,但是该方法的前提是 凸多面体的某个面恰能作为分离面,但当发生碰撞的点均位于各自凸多面体的某 棱边,该算法失效。三是计算复杂,计算量大,例如分离面法中,传统构造分离 面法实现凸多面体分离,难度大、算法复杂、计算量大。

发明内容

本发明目的在于提供一种基于直线投影的凸多面体碰撞检测方法,可适用任 意凸多面体碰撞检测,并且检测实时、快速、准确。

实现本发明目的技术方案:

一种基于直线投影的凸多面体碰撞检测方法,其特征在于:

步骤1:输入两凸多面体VA,VB顶点集:VA(A1,A2,…An),VB(B1,B2,…Bm);

步骤2:输入两凸多面体VA,VB每个面的顶点索引,两凸多面体VA,VB的面数 分别为j,l.;

步骤3:利用中心线正投影分离检测方法检测两凸多面体是否分离,如果分 离,转步骤10,否则,进入步骤4;

步骤4:计算两凸多面体的面摩擦值;

步骤5:按面摩擦值降序原则构造相向面集合;

步骤6:将相向面集中的棱边取出,构造投影分离线簇,投影分离线簇个数 为λ,令

k=0;

步骤7:如果k=λ,则转步骤10,输出碰撞结果,否则令k=k+1,将凸多面体 沿第k条棱在坐标平面做投影;

步骤8:提取投影边界获得凸多边形;

步骤9:判断步骤8获得的凸多边形是否相交,如果分离,转步骤10,否则, 转步骤7;

步骤10:输出分离或碰撞结果。

步骤3中,若2个凸多面体VA,VB的中心分别为CA,CB,直线CACB的参数方 程为y=(1-t)CA+tCB.分别过2个凸多面体的顶点Pi作线段CACB的垂线,则垂 足的参数为:ti=(1-t)CA+tCB,i=1,2,…,n,n+1,…,n+m;

其中,当1≤i≤n时,Pi=Ai;当n+1≤i≤n+m时,Pi=Bi,设VA,VB在中心 线向量CACB上的投影区间为(tAmin,tAmax),(tBmin,tBmax),若tAmax<tBmin或tBmax<tAmin时,则 判断两个凸多面体分离。

步骤4中,凸多面体VA,VB的每个面分别为AFiBFiAFiBFi上的外单位 法向量分别为ANiBNi,两凸多面体间中心向量为CACB或CBCA,则面AFi的 摩擦值AIi为,BFi的摩擦值BIi为, 凸多面体VA的面摩擦值集合为{AIi}={AIi|i=1,2,…,j},凸多 面体VB的面摩擦值集合为{BIi}={BIi|i=1,2,…,l})。

步骤5中,按摩擦值降序从VA,VB面集{AFi},{BFi}中分别取出j1,l1个面,构成 了相向面集{ABFi}。

步骤6中,将相向面集{ABFi}中的棱边取出,构造投影分离线簇 {ABEi|i=1,2,…,λ}。

步骤8中,具体包括以下步骤,

步骤8.1:计算凸多面体顶点沿空间直线在坐标面的投影;

步骤8.2:利用快速排序法将所有投影顶点横坐标由小到大排序;

步骤8.3:根据凸包上边界线斜率下降准则,构造上边界;

步骤8.4:根据凸包下边界线斜率上升准则,构造完下边界;

步骤8.5:将上、下边界连接最终形成凸多边形。

本发明具有的有益效果:

本发明以直线投影为基础,针对分离面算法提出改进,首先通过中心线上的 正投影剔除不可能发生碰撞的凸多面体,其次通过寻找凸多面体上的棱边构造投 影线分离线簇,联系了三维凸多面体和二维平面多边形以及一维线段的相交检测 关系,通过有限次投影运算和相交检测即可得出凸多面体碰撞检测结果,将投影 线分离法成功运用到二维凸多边形的碰撞检测和最近距离计算。与现有凸多面体 碰撞检测方法相比,本发明具有可适用任意凸多面体碰撞检测,并且检测实时、 快速、准确的优点。

本发明改进了以往的凸多面体碰撞检测方法,黎自强在《计算机辅助设计与 图形学学报》中提出“凸多面体快速碰撞检测的投影分离算法”(简称投影分离 面法),该方法将某一凸多面体表面作为分离面,并且沿着该表面与坐标平面的 交线方向投影,通过投影的相交性判断空间凸多面体相交性,但当两凸多面体处 于棱相交,棱对点相交时,凸多面体表面无法作为分离面,因此该方法失效。本 发明改进投影分离面法,提出投影分离线的概念,沿着投影分离线向坐标平面作 投影可将空间凸多面体的碰撞检测降维为平面多边形碰撞检测问题,本发明支持 将凸多面体棱线作为投影分离线并且给出构造投影分离线簇的方法,通过投影分 离线簇实现降维相交测试,实现凸多面体碰撞检测。

本发明对于任意复杂形状和任意相对位置的凸多面体均能实时准确的给出 碰撞检测结果,且成功将基于直线的投影分离算法应用到凸多边形的碰撞检测和 最近距离求解。

本发明应用面广,针对任何物体均可由凸多面体组合近似,因此本发明提出 的一种基于直线投影的凸多面体碰撞检测方法可以应用到机器人路径规划、卫星 仓布局优化设计、虚拟装配等诸多领域。

附图说明

图1本发明基于直线投影的凸多面体碰撞检测方法流程图;

图2凸多边形边界形成示意图;

图3凸多面体投影线分离示意图;

图4凸多边形投影线分离示意图。

具体实施方式

如图1所示,本发明基于直线投影的凸多面体碰撞检测方法包括以下步骤:

步骤1:输入两凸多面体VA,VB顶点集:VA(A1,A2,…An),VB(B1,B2,…Bm);

步骤2:输入两凸多面体VA,VB每个面的顶点索引,两凸多面体VA,VB的面数 分别为j,l.;

步骤3:利用中心线正投影分离检测方法检测两凸多面体是否分离,如果分 离,转步骤10,否则,进入步骤4;

利用中心线上的正投影判断2个凸多面体分离,加快分离检测。若2个凸多 面体VA,VB的中心分别为CA,CB,直线CACB的参数方程为y=(1-t)CA+tCB.分别 过2个凸多面体的顶点Pi作线段CACB的垂线,则垂足的参数为: ti=(1-t)CA+tCB,i=1,2,…,n,n+1,…,n+m;

其中,当1≤i≤n时,Pi=Ai;当n+1≤i≤n+m时,Pi=Bi,设VA,VB在中心 线向量CACB上的投影区间为(tAmin,tAmax),(tBmin,tBmax),若tAmax<tBmin或tBmax<tAmin时,则 判断两个凸多面体分离。

步骤4:计算两凸多面体的面摩擦值;

凸多面体VA,VB的每个面分别为AFiBFiAFiBFi上的外单位法向量分别 为ANiBNi,两凸多面体间中心向量为CACB或CBCA,则面AFi的摩擦值 BFi的摩擦值凸多面体VA的面摩擦值集合为 {AIi}={AIi|i=1,2,…,j},凸多面体VB的面摩擦值集合为 {BIi}={BIi|i=1,2,…,l})。

步骤5:按面摩擦值降序原则构造相向面集合;

按摩擦值降序从VA,VB面集{AFi},{BFi}中分别取出j1,l1个面,构成了相向面集 {ABFi}。

步骤6:将相向面集{ABFi}中的棱边取出,构造投影分离线簇 {ABEi|i=1,2,…,λ},投影分离线簇个数为λ,应注意筛选,避免重复投影,减少 计算量。令k=0;

步骤7:如果k=λ,则转步骤10,输出碰撞结果,否则令k=k+1,选取第k条 投影分离线lk(ak,bk,ck),将凸多面体在所选分离线在坐标系上作投影。以凸多面 体VA为例,将VA沿着投影分离线lB(ai,bi,ci)在坐标系上作投影,如图3所示。其 中点Ai(xi,yi,zi)在坐标系xoz平面上投影顶点为A′i(x′i,y′i,z′i),计算公式为:

xiyizi1=xiyizi1×10000100-aibi-cibi000001---(1)

若ai≠0,Ai沿lB向坐标平面yoz作投影;若ci≠0,Ai沿lB向坐标平面xoy作 投影。

步骤8:提取投影边界获得凸多边形;

由于凸多面体在坐标系上的投影区域边界为凸多边形,因此需要根据投影顶 点集提取投影凸多边形,如图2所示,

步骤8.1:按照公式(1)计算凸多面体顶点沿空间直线在坐标面的投影,如 图2中(a)图所示;

步骤8.2:利用快速排序法将所有投影顶点横坐标由小到大排序,此时同一横 坐标可能对应多个顶点,如图2中(b)图所示;

步骤8.3:根据凸包上边界线斜率下降准则,如图2中(c)图所示,图示顶点构 成第一条棱边AB,下一个顶点为C,位于棱AB的左侧,则与准则冲突并从上边 集中剔除B,将C加入上边集,同理删除D保留E,如果同一横坐标对应多个顶 点,则选取纵坐标值最大的点。最终构造上边界,如图2中(d)图所示。

步骤8.4:根据凸包下边界线斜率上升准则,构造完下边界,如图2中(e)图 所示;

步骤8.5:将上、下边界连接最终形成凸多边形,如图2中(f)图所示

步骤9:判断步骤8获得的凸多边形是否相交,如果分离,转步骤10,否则, 转步骤7

如图4所示,将凸多面体投影分离法应用到凸多边形,将凸多边形相向面上 的棱边作为投影分离线簇,再将凸多边形沿投影分离线向坐标轴作投影(如果投 影分离线与所投影坐标轴平行,则改向另一坐标轴作投影)即可由投影区域 πAB的相交性得出凸多边形是否相交,由于凸多边形的投影分离原理与凸多面 体类似,因此不再详述。

当凸多边形分离时,凸多边形PA,PB间的最短距离h′与投影区域的最短距离 h″满足:

h′=h″|cosβ|

其中,β为投影分离线lA与坐标轴的夹角,如图4所示。若h″>0,凸多边形分 离,可判定凸多面体分离

步骤10:输出分离或碰撞结果。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号