一种三角形物体接触检测方法、系统、装置和存储介质与流程

文档序号:20265329发布日期:2020-04-03 18:19阅读:214来源:国知局
一种三角形物体接触检测方法、系统、装置和存储介质与流程

本发明涉及工业技术领域,尤其是一种三角形物体接触检测方法、系统、装置和存储介质。



背景技术:

在产品设计、工业生产、电子游戏和计算机仿真等领域,广泛地存在对物体的接触或碰撞进行测试的需要。现有技术通常是先对物体进行建模,然后执行标量判别法、矢量判别法以及矩阵求逆等数学运算,根据运算结果来判断物体之间是否存在接触或碰撞。现有技术的算法复杂、计算量庞大,对计算机设备的运算能力具有较高的要求,在执行任务时需要耗费较多的时间,因此实现成本较高。



技术实现要素:

针对上述至少一个技术问题,本发明的目的在于提供一种三角形物体接触检测方法、系统、装置和存储介质。

一方面,本发明实施例包括一种三角形物体接触检测方法,包括:

确定所述第一三角形物体所在平面的法向量

确定第一向量第二向量和第三向量所述第一向量第二向量和第三向量从所述第一三角形物体的一个顶点分别指向所述第二三角形物体的各个顶点;

通过公式确定第一判别因子θ1、第二判别因子θ2和第三判别因子θ3;

在所述第一判别因子θ1、第二判别因子θ2和第三判别因子θ3具有相同符号的情况下,返回第一检测结果,反之返回第二检测结果;所述第一检测结果为所述第一三角形物体与第二三角形物体之间未发生接触,所述第二检测结果为所述第一三角形物体与第二三角形物体之间存在空间错位。

进一步地,在所述返回第二检测结果的情况下,还包括以下步骤:

建立与直角坐标系;所述直角坐标系与所述第一三角形物体位于同一平面;

确定所述第一三角形物体各顶点的坐标;

根据各顶点的坐标,确定所述第一三角形物体对应的截距范围;

确定所述第二三角形物体与所述第一三角形物体所在平面交点的坐标;

根据所述交点的坐标,确定所述交点的等效截距;

在所述交点的所有等效截距处于相应所述截距范围内的情况下,返回第三检测结果;所述第三检测结果为所述第一三角形物体与第二三角形物体之间发生接触。

进一步地,所述方法还包括以下步骤:

在所述交点的等效截距不处于所述截距范围内的情况下,返回第四检测结果;所述第四检测结果为所述第一三角形物体与第二三角形物体之间未发生接触。

进一步地,所述直角坐标系的原点与所述第一三角形物体的一个顶点重合,所述直角坐标系的一条数轴与所述第一三角形物体的一条边重合。

进一步地,所述根据各顶点的坐标,确定所述第一三角形物体对应的截距范围这一步骤,包括:

根据各顶点的坐标,确定所述第一三角形物体的各条边的直线方程,从而确定第一截距;

根据各顶点的坐标,确定所述第一三角形物体的各顶点所引出的与对边平行直线的直线方程,从而确定第二截距;

所述第一截距与相应的第二截距组成所述截距范围。

进一步地,所述确定所述第二三角形物体与所述第一三角形物体所在平面交点的坐标这一步骤,包括:

确定所述第二三角形物体的一条边的直线方程;

由所述第一三角形物体的一个顶点的坐标与所述法向量确定一个平面方程;

对所确定的直线方程和平面方程进行求解,从而确定所述交点的坐标。

进一步地,根据所述交点的坐标,确定所述交点的等效截距这一步骤,包括:

根据所述交点的坐标,确定所述交点所引出的与所述第一三角形物体各边平行直线的直线方程;所确定的直线方程的截距为所述等效截距。

另一方面,本发明实施例还包括一种三角形物体接触检测系统,用于检测第一三角形物体与第二三角形物体之间是否发生接触,包括:

第一模块,用于确定所述第一三角形物体所在平面的法向量

第二模块,用于确定第一向量第二向量和第三向量所述第一向量第二向量和第三向量从所述第一三角形物体的一个顶点分别指向所述第二三角形物体的各个顶点;

第三模块,用于通过公式确定第一判别因子θ1、第二判别因子θ2和第三判别因子θ3;

第四模块,用于在所述第一判别因子θ1、第二判别因子θ2和第三判别因子θ3具有相同符号的情况下,返回第一检测结果,反之返回第二检测结果;所述第一检测结果为所述第一三角形物体与第二三角形物体之间未发生接触,所述第二检测结果为所述第一三角形物体与第二三角形物体之间存在空间错位。

另一方面,本发明实施例还包括一种三角形物体接触检测装置,包括存储器和处理器,所述存储器用于存储至少一个程序,所述处理器用于加载所述至少一个程序以执行所述三角形物体接触检测方法。

另一方面,本发明实施例还包括一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行实施例所述三角形物体接触检测方法。

本发明的有益效果是:实施例中的三角形物体接触检测方法,通过简单的坐标计算可以判断两个三角形物体之间是否发生接触,可以避免使用标量判别法、矢量判别法以及矩阵求逆等复杂的数学运算,从而简化算法,减小计算量,无需使用高性能的计算机设备即可实现,减少在执行任务时耗费的时间,具有较低的实现成本。

附图说明

图1为实施例中建立直角坐标系的原理示意图;

图2、图3和图4为实施例中计算所述截距范围的原理示意图;

图5为实施例中所述交点的示意图;

图6、图7和图8为实施例中通过所述等效截距判断交点与第一三角形物体位置关系的原理示意图。

具体实施方式

本实施例中所述的接触检测方法,用于对两个三角形物体之间是否发生接触进行检测。本实施例中,将需要进行检测的两个三角形物体分别称为第一三角形物体与第二三角形物体,它们既可以是使用木材、塑料或者金属等材料制成的实物物体,也可以是存在于计算机存储空间中的模型数据或仿真数据。对于以实物物体形式存在的三角形物体,可以通过拍摄、绘画、建模和/或仿真等手段,获取得到相应的计算机数据,然后在计算机中进行仿真。当然,对实施例中所述方法的实施过程,并不限于使用仿真软件来实施,只是由于仿真技术的便利性,因此本实施例中从计算机仿真的角度来进行讲述。

本实施例中,所述第一三角形物体与第二三角形物体都是很薄的平面物体,并且它们是实心的,与此相对应的一种状况是,它们也可以是空心的,也就是所述第一三角形物体与第二三角形物体分别是一个三角形的框。

本实施例中,所述接触,包括以下情况:所述第一三角形物体与第二三角形物体初始处于相隔较远的状态,经过位移可能发生碰撞,即此时的接触指的是碰撞这一动态过程的结果;所述第一三角形物体与第二三角形物体都需要占据空间中相同的位置,可能导致其中一个物体发生损坏或者变形,即此时的接触指的是一个静态过程。

本实施例中,以符号δabc表示第一三角形物体,即第一三角形物体的三个顶点分别为a、b和c;以符号δa1b1c1表示第二三角形物体,即第二三角形物体的三个顶点分别为a1、b1和c1。

本实施例中,使用计算机建模技术执行所述三角形物体接触检测方法时,先建立直角坐标系,则可以将涉及到的计算转化为坐标的计算,从而方便进行处理。为了进一步简化处理,参照图1,在建立直角坐标系时,将直角坐标系的原点设置在所述第一三角形物体的一个顶点a上,直角坐标系的x轴设置在所述第一三角形物体的一条边ab上。直角坐标系的xy平面与所述第一三角形物体位于同一平面。这样,将各点投影至所述第一三角形物体所在平面。便可以获得它们的x坐标和y坐标,当讨论各点的坐标时,根据所处场景,既可以是指它们的空间坐标,也可以指它们在所述第一三角形物体所在平面的投影的坐标,即其x坐标和y坐标,从而简化计算。

本实施例中,所述三角形物体接触检测方法包括以下步骤:

s1.确定所述第一三角形物体所在平面的法向量在建立坐标系之后,所述法向量可以表示为

s2.确定第一向量第二向量和第三向量所述第一向量第二向量和第三向量从所述第一三角形物体的一个顶点分别指向所述第二三角形物体的各个顶点,在选定所述第一三角形物体的顶点a的情况下,第一向量第二向量第三向量在建立直角坐标系的情况下,第一向量、第二向量和第三向量还可以通过坐标来表示。

s3.通过公式确定第一判别因子θ1、第二判别因子θ2和第三判别因子θ3;即第一判别因子第二判别因子第三判别因子其中,表示向量之间的夹角;

s4.在所述第一判别因子θ1、第二判别因子θ2和第三判别因子θ3具有相同符号的情况下,也就是第一判别因子θ1、第二判别因子θ2和第三判别因子θ3均为正数或者均为负数的情况下,表示整个所述第二三角形物体都位于所述第一三角形物体的同一侧,则返回第一检测结果,所述第一检测结果可以通过代码或文字等形式表示,其内容为:所述第一三角形物体与第二三角形物体之间未发生接触。

如果不存在上述情况,那么表明所述第二三角形物体并非整体位于所述第一三角形物体的同一侧,如果所述第二三角形物体足够大,那么有可能延伸至与所述第一三角形物体接触,如果所述第二三角形物体足够小,那么有可能不会与所述第一三角形物体接触。因此,此时暂不能对第一三角形物体和第二三角形物体之间是否接触得出明确的判断结果,只能判断所述第一三角形物体与第二三角形物体之间存在空间错位的关系,返回第二检测结果以表示它们之间的空间错位关系。

在执行步骤s4后,如果所返回的是第二检测结果,也就是判断所述第一三角形物体与第二三角形物体之间存在空间错位,那么可以进一步执行以下步骤,来确定所述第一三角形物体与第二三角形物体之间是否接触:

s5.根据第一三角形物体各顶点的坐标,确定所述第一三角形物体对应的截距范围;第一三角形物体有三个顶点,它们分别具有对应的截距范围,也就是针对第一三角形物体的三个顶点,分别执行以下步骤s501-s503:

s501.根据顶点的坐标,确定所述第一三角形物体的各条边的直线方程,从而确定第一截距;本实施例中,仅考虑在坐标系xy平面上的直线方程;如图2所示,对于第一三角形物体的边ab,可以根据顶点a和顶点b的坐标,来计算得到直线ab的方程,本实施例中使用斜截式方程来进行表示,即直线ab的方程为y=k1x+d1,由此可以看到边ab对应的第一截距为d1;如图3所示,对于第一三角形物体的边ac,可以根据顶点a和顶点c的坐标,来计算得到直线ac的方程y=k2x+d2,由此可以看到边ac对应的第一截距为d2;如图4所示,对于第一三角形物体的边bc,可以根据顶点b和顶点c的坐标,来计算得到直线bc的方程y=k3x+d3,由此可以看到边bc对应的第一截距为d3;

s502.根据顶点的坐标,确定所述第一三角形物体的各顶点所引出的与对边平行直线的直线方程,从而确定第二截距;参照图2,边ab是顶点c的对边,从顶点c引出与边ab平行的直线,其为y=k1x+d1的形式,通过代入的顶点c坐标值可以确定参数d1的值,边bc对应的第二截距为d1;参照图3,边ac是顶点b的对边,从顶点b引出与边ac平行的直线,其为y=k2x+d2的形式,通过代入的顶点b坐标值可以确定参数d2的值,边ac对应的第二截距为d2;参照图4,边bc是顶点a的对边,从顶点a引出与边bc平行的直线,其为y=k3x+d3的形式,通过代入的顶点a坐标值可以确定参数d3的值,边bc对应的第二截距为d3;

s503.所述第一截距与相应的第二截距组成所述截距范围,由步骤s501和s502可知,可以获得三组截距范围[d1,d1]、[d2,d2]和[d3,d3]。

s6.确定所述第二三角形物体与所述第一三角形物体所在平面交点的坐标;所述交点是指第二三角形物体的其中两条边与第一三角形物体所在平面相交的点,如图5所示,点o1和o2就是所述交点;由图5可以看出,只要点o1和o2其中一个位于第一三角形物体内,即可判断第一三角形物体与第二三角形物体接触,因此只需考虑一个交点即可;本实施例中,通过以下步骤s601-s603来确定所述交点的坐标:

s601.确定所述第二三角形物体的一条边的直线方程;本实施例中,所考虑的边是图5所示的b1c1,这是一条与所述第一三角形物体所在平面相交的边;首先确定向量的坐标表示式根据顶点b1的坐标b1(x1,y1,z1),可以确定直线b1c1的方程为

s602.由所述第一三角形物体的一个顶点的坐标a(x0,y0,z0)与所述法向量可以确定顶点a与法向量所在平面的方程a(x-x0)+b(y-y0)+c(z-z0)=0;

s603.对所确定的直线方程和平面方程a(x-x0)+b(y-y0)+c(z-z0)=0进行求解,根据所得的解确定所述交点的坐标o1(xk,yk,zk)。

s7.根据所述交点的坐标,确定所述交点的等效截距;如图6、图7和图8所示,从交点o1(xk,yk,zk)可以分别作出与所述第一三角形物体的边ab、ac和bc平行的直线,它们分别具有y=k1x+d01、y=k2x+d02和y=k2x+d03的形式,这些直线的截距d01、d02和d03就是交点o1(xk,yk,zk)分别相对于所述第一三角形物体的边ab、ac和bc的等效截距。

由图6和图8以及可以进一步验证的情况可以看出,如果交点o1(xk,yk,zk)位于第一三角形物体内,那么将同时满足d01∈(d1,d1)、d02∈(d2,d2)和d03∈(d3,d3);如果d01∈(d1,d1)、d02∈(d2,d2)和d03∈(d3,d3)不能同时满足,那么可以判断交点o1(xk,yk,zk)位于第一三角形物体外。

针对两个交点o1和o2分别执行步骤s6和s7,可以分别通过它们的等效截距与所述第一三角形物体的截距范围之间的关系,来判断它们是否位于所述第一三角形物体内。如果两个交点o1和o2中至少一个位于所述第一三角形物体内,那么可以判断所述第一三角形物体与第二三角形物体之间发生接触,以第三检测结果的形式进行返回;如果两个交点o1和o2都没有位于所述第一三角形物体内,那么可以判断所述第一三角形物体与第二三角形物体之间没有发生接触,以第四检测结果的形式进行返回。

本实施例中,所述三角形物体接触检测系统包括:

第一模块,用于确定所述第一三角形物体所在平面的法向量

第二模块,用于确定第一向量第二向量和第三向量所述第一向量第二向量和第三向量从所述第一三角形物体的一个顶点分别指向所述第二三角形物体的各个顶点;

第三模块,用于通过公式确定第一判别因子θ1、第二判别因子θ2和第三判别因子θ3;

第四模块,用于在所述第一判别因子θ1、第二判别因子θ2和第三判别因子θ3具有相同符号的情况下,返回第一检测结果,反之返回第二检测结果;所述第一检测结果为所述第一三角形物体与第二三角形物体之间未发生接触,所述第二检测结果为所述第一三角形物体与第二三角形物体之间存在空间错位。

所述第一模块、第二模块、第三模块和第四模块可以是具有相应功能的软件模块、硬件模块或软件模块和硬件模块的结合。

将上述步骤s1-s7编写成驱动程序,并写入现有的计算机设备的内存中,当内存中的驱动程序被读取出来并执行时,便可以执行所述方法,可以使得现有的计算机设备成为所述三角形物体接触检测系统或装置,从而达到实施例中所述的有益效果。

需要说明的是,如无特殊说明,当某一特征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间接地固定、连接在另一个特征上。此外,本公开中所使用的上、下、左、右等描述仅仅是相对于附图中本公开各组成部分的相互位置关系来说的。在本公开中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本实施例所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本实施例说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。本实施例所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。

应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本公开范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。本实施例所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。

应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。

此外,可按任何合适的顺序来执行本实施例描述的过程的操作,除非本实施例另外指示或以其他方式明显地与上下文矛盾。本实施例描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。

进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、ram、rom等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本实施例所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。

计算机程序能够应用于输入数据以执行本实施例所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。

以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1