掌桥专利:专业的专利平台
掌桥专利
首页

仿真方法、装置、电子设备及计算机可读存储介质

文献发布时间:2023-06-19 19:27:02


仿真方法、装置、电子设备及计算机可读存储介质

技术领域

本申请涉及仿真技术领域,尤其涉及仿真方法、装置、电子设备及计算机可读存储介质。

背景技术

多体系统动力学是研究多体系统运动规律的科学。相关技术中,一般采用多体动力学仿真软件实现简单几何体的碰撞检测。其中,相关技术中的仿真软件,在对两个几何体进行碰撞检测时,常采用将对应的几何体模型转成三角网格模型,利用三角网格模型上的多个三角面片及碰撞检测算法进行处理获取碰撞点、嵌入深度以及碰撞力等数据。上述的碰撞检测过程中,由于需要处理的三角面片数量多,碰撞检测时间延长,大大增加仿真时间,影响仿真测量速度。

发明内容

为解决或部分解决相关技术中存在的问题,本申请提供一种仿真方法、装置、电子设备及计算机可读存储介质,能够提高碰撞检测效率,提高仿真测量速度,从而提高用户的使用体验。

本申请第一方面提供一种仿真方法,包括:

获取第一碰撞模型及第二碰撞模型,其中所述第一碰撞模型为由多个平面和端点组成的多面体,所述第二碰撞模型为圆柱体;

对所述第一碰撞模型或第二碰撞模型进行离散化处理,获取与第一碰撞模型或第二碰撞模型对应的模型离散参数;

根据模型离散参数与另一模型的位置关系,确定第一碰撞模型与第二碰撞模型之间的碰撞方式;

根据所述碰撞方式及模型离散参数对所述第一碰撞模型与第二碰撞模型进行碰撞检测计算,获取仿真结果。

在一些实施例中,所述对所述第一碰撞模型或第二碰撞模型进行离散化处理,获取与第一碰撞模型或第二碰撞模型对应的模型离散参数,包括:

对所述第一碰撞模型进行离散化,获取与所述第一碰撞模型端点对应的端点参数和/或与所述第一碰撞模型棱边对应的棱边参数。

在一些实施例中,所述根据所述模型离散参数与另一模型的位置关系,确定第一碰撞模型与第二碰撞模型之间的碰撞方式,包括:

根据所述端点参数中的端点位于所述第二碰撞模型之内,确定所述第一碰撞模型与第二碰撞模型的碰撞方式为第一碰撞方式,其中第一碰撞方式对应第一碰撞模型的端点嵌入第二碰撞模型内;或

根据所述棱边参数中的直线部分位于所述第二碰撞模型之内,确定所述第一碰撞模型与第二碰撞模型的碰撞方式为第二碰撞方式,其中第二碰撞方式第一碰撞模型的棱边嵌入第二碰撞模型内。

在一些实施例中,所述根据所述碰撞方式及模型离散参数对所述第一碰撞模型与第二碰撞模型进行碰撞检测计算,获取仿真结果,包括:

根据所述第一碰撞方式及端点参数,获取所述第一碰撞模型位于第二碰撞模型内的第一碰撞点及与所述第一碰撞点对应的第一嵌入深度;

根据所述第一碰撞点及第一嵌入深度对所述第一碰撞模型与第二碰撞模型进行碰撞计算,获取仿真结果;或

根据所述第二碰撞方式及棱边参数,获取所述第一碰撞模型穿过第二碰撞模型的第一碰撞线及与所述第一碰撞线对应的第二碰撞点和第二嵌入深度;

根据所述第二碰撞点和第二嵌入深度对所述第一碰撞模型与第二碰撞模型进行碰撞计算,获取仿真结果。

在一些实施例中,所述对所述第一碰撞模型或第二碰撞模型进行离散化处理,获取与第一碰撞模型或第二碰撞模型对应的模型离散参数,包括:

对所述第二碰撞模型进行离散化,获取与所述第二碰撞模型侧面对应的直线参数。

在一些实施例中,所述根据所述模型离散参数与另一模型的位置关系,确定第一碰撞模型与第二碰撞模型之间的碰撞方式,包括:

根据所述直线参数的直线部分或全部位于所述第一碰撞模型之内,确定所述第一碰撞模型与第二碰撞模型的碰撞方式为第三碰撞方式,其中第三碰撞方式对应第二碰撞模型的侧面嵌入第一碰撞模型的平面内。

在一些实施例中,所述根据所述碰撞方式及模型离散参数对所述第一碰撞模型与第二碰撞模型进行碰撞检测计算,获取仿真结果,包括:

根据所述第三碰撞方式及直线参数,获取所述第二碰撞模型嵌入第一碰撞模型的第二碰撞线及与所述第二碰撞线对应的第三碰撞点和第三嵌入深度;

根据所述第三碰撞点和第三嵌入深度对所述第一碰撞模型与第二碰撞模型进行碰撞计算,获取仿真结果。

本申请第二方面提供一种的仿真装置,包括:

输入模块,用于获取第一碰撞模型及第二碰撞模型,其中所述第一碰撞模型为由多个平面和端点组成的多面体,所述第二碰撞模型为圆柱体;

离散模块,用于对所述第一碰撞模型或第二碰撞模型进行离散化处理,获取与第一碰撞模型或第二碰撞模型对应的模型离散参数;

碰撞预处理模块,用于根据模型离散参数与另一模型的位置关系,确定第一碰撞模型与第二碰撞模型之间的碰撞方式;

碰撞计算模块,用于根据所述碰撞方式及模型离散参数对所述第一碰撞模型与第二碰撞模型进行碰撞检测计算,获取仿真结果。

本申请第三方面提供一种电子设备,包括:

处理器;以及

存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如上所述的方法。

本申请第四方面提供一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上所述的方法。

本申请提供的技术方案可以包括以下有益效果:

本申请的技术方案,通过对碰撞模型离散化获取对应的模型离散参数,通过模型离散参数与另一模型的位置关系判断模型之间的碰撞方式,再根据碰撞方式对碰撞模型计算仿真结果,其中整个碰撞检测过程中,利用离散化处理获得的模型离散参数实现计算仿真结果,免去传统技术中需要对模型进行三角面片处理过程,有效缩短碰撞检测时间,提高仿真测量速度。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

通过结合附图对本申请示例性实施方式进行更详细地描述,本申请的上述以及其它目的、特征和优势将变得更加明显,其中,在本申请示例性实施方式中,相同的参考标号通常代表相同部件。

图1是本申请实施例示出的仿真方法的流程示意图;

图2是本申请实施例示出的仿真方法的另一流程示意图;

图3是本申请实施例示出的仿真方法中获取嵌入位置最深的端点的流程示意图;

图4是本申请实施例示出的仿真方法的另一流程示意图;

图5是本申请实施例示出的仿真方法的另一流程示意图;

图6是本申请实施例示出的仿真方法的另一流程示意图;

图7是本申请实施例示出的仿真装置的结构示意图;

图8是本申请实施例示出的电子设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本申请的实施方式。虽然附图中显示了本申请的实施方式,然而应该理解,可以以各种形式实现本申请而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本申请更加透彻和完整,并且能够将本申请的范围完整地传达给本领域的技术人员。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语“第一”、“第二”、“第三”等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

相关技术中,多体动力学仿真软件在进行碰撞检测过程中,由于需要处理的三角面片数量多,碰撞检测时间延长,大大增加仿真时间,影响仿真测量速度。

针对上述问题,本申请实施例提供一种的仿真方法,能够提高碰撞检测效率,提高仿真测量速度,从而提高用户的使用体验。其中,本申请的仿真方法主要应用于仿真软件,尤其是多体动力学仿真软件。具体的,本申请的仿真方法主要用于对圆柱体与多面体之间的碰撞检测,其中多面体可以为正方体、长方体等。需要说明的是,本申请的仿真方法可以应用于一对多的模型碰撞,即圆柱体或多面体的数量可以为至少一个,例如一个圆柱体与多个多面体之间的碰撞,又例如多个圆柱体与一个多面体之间的碰撞。

以下结合附图详细描述本申请实施例的技术方案。

图1是本申请实施例示出的仿真方法的流程示意图。

参见图1,本申请的仿真方法,包括:

S110,获取第一碰撞模型及第二碰撞模型。

其中,第一碰撞模型及第二碰撞模型可以由用户在本地端输入或用户从网络端下载。其中第一碰撞模型及第二碰撞模型可以为常规的三维数据格式,例如第一碰撞模型及第二碰撞模型为Parasolid、IGES、STEP、ACIS、SHL等格式三维数据。当然,第一碰撞模型及第二碰撞模型还可以是与对应仿真软件适配的其它格式。

第一碰撞模型可以为由多个平面和端点组成的多面体,其中第一碰撞模型可以包括但不限于正方体、长方体等多面体。例如第一碰撞模型还可以是五角柱、六角柱。第二碰撞模型为圆柱体。

S120,对第一碰撞模型或第二碰撞模型进行离散化处理,获取与第一碰撞模型或第二碰撞模型对应的模型离散参数。

在该步骤中,通过对第一碰撞模型或第二碰撞模型进行离散化处理,其中对第一碰撞模型离散化处理后,可以获取与第一碰撞模型或第二碰撞模型对应的模型离散参数,其中模型离散参数可以包括与第一碰撞模型对应的端点及与端点连接的棱边、与第二碰撞模型侧面对应的多个直线。

在一些实施方式中,模型离散参数可以包括但不限于:与第一碰撞模型对应的端点参数、与第一碰撞模型对应的棱边参数、与第二碰撞模型侧面对应的直线参数。

其中对第一碰撞模型和第二碰撞模型不进行同时离散化处理,即只对第一碰撞模型离散化或只对第二碰撞模型离散化。可以理解,当对第一碰撞模型进行离散化时,第二碰撞模型不进行离散化;当对第二碰撞模型进行离散化时,第二碰撞模型不进行离散化。

S130,根据模型离散参数与另一模型的位置关系,确定第一碰撞模型与第二碰撞模型之间的碰撞方式。

对第一碰撞模型或第二碰撞模型的离散化结果可以是获取与第一碰撞模型对应的端点及与端点连接的棱边相关参数,或者是获取与第二碰撞模型对应的侧面对应的多个直线相关参数。

通过模型离散参数与另一模型的位置关系,即根据对其中一个模型离散化处理后获取的模型离散参数与另一不进行离散化处理的模型的位置关系,判定第一碰撞模型与第二碰撞模型之间的碰撞方式,以使后续根据碰撞方式对第一碰撞模型与第二碰撞模型之间进行不同计算方式的碰撞检测计算。

其中,对第一碰撞模型和第二碰撞模型可以进行两次离散化,其中一次只对第一碰撞模型进行离散化处理,另外一次只对第二碰撞模型进行离散化处理,两次离散化处理结果分别用于判断第一碰撞模型和第二碰撞模型之间的不同碰撞方式。

在一些实施方式中,第一碰撞模型与第二碰撞模型之间的碰撞方式可以包括第一碰撞方式、第二碰撞方式及第三碰撞方式。第一碰撞方式可以是第一碰撞模型与第二碰撞模型发生点接触,第二碰撞方式可以是第一碰撞模型与第二碰撞模型发生线接触,第三碰撞方式可以是第二碰撞模型与第一碰撞模型发生面接触。其中只对第一碰撞模型进行离散化处理的结果可以用于判断第一碰撞方式、第二碰撞方式,只对第二碰撞模型进行离散化处理的结果可以用于判断第三碰撞方式。

S140,根据碰撞方式及模型离散参数对第一碰撞模型与第二碰撞模型进行碰撞检测计算,获取仿真结果。

根据第一碰撞模型与第二碰撞模型之间确定的碰撞方式,以及根据对模型进行离散化处理后获取的模型离散参数对第一碰撞模型与第二碰撞模型进行碰撞检测计算,获取两者的仿真结果。

其中仿真结果可以包括但不限于:输出碰撞点、碰撞深度及碰撞力。需要指出的是,碰撞点指的是模型嵌入最深的点,碰撞深度指的是碰撞点嵌入模型的嵌入深度,碰撞力指的是与碰撞点对应碰撞引起的作用力,其中碰撞力可以是一种向量参数。

在该实施例中,本申请的技术方案,通过对碰撞模型离散化获取对应的模型离散参数,通过模型离散参数与另一模型的位置关系判断模型之间的碰撞方式,再根据碰撞方式对碰撞模型计算仿真结果,其中整个碰撞检测过程中,利用离散化处理的模型离散参数实现计算仿真结果,免去传统技术中需要对模型进行三角面片处理过程,有效缩短碰撞检测时间,提高仿真测量速度。

图2是本申请实施例示出的仿真方法的另一流程示意图。

参见图2,本申请的仿真方法,主要应用于多体动力学仿真软件,包括:

S210,获取由用户在本地端输入的第一碰撞模型及第二碰撞模型。

用户通过本地端输入第一碰撞模型及第二碰撞模型。其中本地端可以为计算机或智能平板等控制终端。其中第一碰撞模型为多面体,第二碰撞模型为圆柱体。

S220,对第一碰撞模型进行离散化,获取与第一碰撞模型对应的端点参数。

对为多面体的第一碰撞模型进行离散化,其中离散化后的第一碰撞模型形成多个端点以及与位于端点之间的多个棱边,获取与第一碰撞模型对应的端点参数。

其中,端点参数可以包括但不限于:端点的坐标参数。

S230,根据端点参数中的端点位于第二碰撞模型之内,确定第一碰撞模型与第二碰撞模型的碰撞方式为第一碰撞方式。

其中,第一碰撞方式为第一碰撞模型与第二碰撞模型为点接触碰撞方式。需要指出的是,点接触碰撞方式指的是多面体的端点位于圆柱体内部或表面,即第一碰撞模型的端点位于第二碰撞模型内部或表面。其中,端点位于第二碰撞模型之内包括端点位于第二碰撞模型内部及表面。

根据端点参数中的端点存在位于第二碰撞模型之内,则确定第一碰撞模型与第二碰撞模型的碰撞方式为第一碰撞方式。

其中,可以根据端点参数中的端点的位置参数判断对应端点是否位于第二碰撞模型之内。在一些实施方式中,根据可以通过第二碰撞模型的中心作为原点建立坐标系,根据端点参数中的端点的位置参数判断端点的位置是否位于第二碰撞模型之内。

当根据端点参数中的端点的位置参数判断具有位于第二碰撞模型之内端点,则确定第一碰撞模型与第二碰撞模型之间的碰撞方式为与点接触碰撞方式对应的第一碰撞方式。

S240,根据第一碰撞方式及端点参数,获取第一碰撞模型位于第二碰撞模型内的第一碰撞点及与所述第一碰撞点对应的第一嵌入深度。

根据第一碰撞模型与第二碰撞模型之间的碰撞方式为与点接触碰撞方式对应的第一碰撞方式,通过离散化处理获取的端点参数,获取第一碰撞模型位于第二碰撞模型内的第一碰撞点及第一碰撞点的第一嵌入深度。

需要指出的是,第一碰撞点为第一碰撞模型嵌入第二碰撞模型最深的端点。第一嵌入深度即为第一碰撞点的嵌入深度,第一碰撞点的嵌入深度亦为第一碰撞模型的嵌入深度。

在一些实施方式中,当第一碰撞模型只存在一个或多个端点位于第二碰撞模型表面或内部时,第一碰撞模型位于第二碰撞模型的最深入位置可以为该一个端点或多个端点中的其中一个。

其中,端点参数可以包括:嵌入位置最深的一个端点对应的位置参数。应该理解,第一碰撞模型与第二碰撞模型之间的碰撞中,第一碰撞模型的嵌入深度可以为嵌入位置最深的一个端点参数。例如第一碰撞模型位于第二碰撞模型内的端点具有多个,其中以嵌入深度最深的端点作为第一碰撞模型的嵌入位置最深的端点。

其中,嵌入位置最深的端点为多个时,可以取该多个端点的平均值,即取多个端点的坐标参数中值作为端点参数作为与第一碰撞模型对应的端点参数。

在一些实施方式中,嵌入位置最深的端点可以通过端点相对第二碰撞模型的端面或侧面的最短距离进行判断。具体的,单个端点的嵌入深度可以为该端点相对第二碰撞模型的端面或侧面的最短距离。其中端点相对第二碰撞模型的端面的最短距离可以是通过该端点到端面的垂线长度距离,该垂线长度距离为端点相对于第二碰撞模型的端面的最短距离;其中端点相对第二碰撞模型的侧面的最短距离可以为第二碰撞模型的半径与通过该端点到第二碰撞模型轴线的垂线长度距离的差值。

在一些实施方式中,每一端点的嵌入深度可以为该端点相对第二碰撞模型的端面的最短距离和该端点相对第二碰撞模型的侧面的最短距离中数值最小的一个。应该理解,每一端点只具有一个嵌入深度。

图3是本申请实施例示出的仿真方法中获取嵌入位置最深的端点的流程示意图。

参见图3,为了便于对本申请的方法更加清楚连接,以下以第一碰撞模型为正方体及第二碰撞模型为圆柱体为例,说明本申请的方法获取嵌入位置最深的端点的流程步骤,其中第一碰撞模型进行离散化处理后具有8个端点。

S241,获取端点的位置信息。

根据对第一碰撞模型进行离散化获取的端点参数,获取端点参数中其中一个端点的位置信息。

S242,判断端点是否位于圆柱体之内。

根据该端点的位置信息判断该端点是否在圆柱体内。若该端点在圆柱体内则继续判断流程;若端点不在圆柱体内则返回步骤S231,重新选择下一个端点的位置信息并进入判断下一个端点的嵌入深度。

S243,获取端点的嵌入深度。

计算该端点相对第二碰撞模型的端面的最短距离和该端点相对第二碰撞模型的侧面的最短距离,取两个最短距离中数值最小的一个作为端点的嵌入深度。

S244,判断是否完成判断所有端点的嵌入深度。

判断是否完成8端点的嵌入深度判断,若完成所有端点的嵌入深度判断则继续下一判断流程,否则返回步骤S241,重新选择下一个端点的位置信息并进入判断下一个端点的嵌入深度。

S245,输出嵌入深度最大的端点作为第一碰撞点。

在判断完所有端点的嵌入深度后,输出嵌入深度最大的端点作为第一碰撞点。

其中,在输出第一碰撞点之前还可以进行判断是否存在多个嵌入深度相同的端点,若存在则取多个嵌入深度相同的端点的均值作为第一碰撞点的参数值,若不存在则输出嵌入深度最大的端点作为第一碰撞点。其中第一碰撞点的方向作为模型的嵌入方向。

S250,根据第一碰撞点及第一嵌入深度对第一碰撞模型与第二碰撞模型进行碰撞计算,获取仿真结果。

在确定第一碰撞模型的第一碰撞点及第一碰撞点对应的第一嵌入深度后,根据上述两种参数对第一碰撞模型与第二碰撞模型进行碰撞计算,获取两个碰撞模型的仿真结果。

其中仿真结果可以包括但不限于:输出第一碰撞模型与第二碰撞模型之间的碰撞力。当然,仿真结果还可以包括输出第一碰撞点的位置信息及第一嵌入深度。

在该实施例中,本申请的技术方案,通过对第一碰撞模型进行离散化,通过离散化第一碰撞模型后获取的端点参数,判断第一碰撞模型与未离散化的第二碰撞模型之间是否为点接触碰撞对应的第一碰撞方式,再根据点接触碰撞采用对应的预设计算方法计算仿真结果,有效提高对第一碰撞模型与第二碰撞之间发生点接触碰撞的碰撞检测精度。

图4是本申请实施例示出的仿真方法的另一流程示意图。

参见图4,本申请的仿真方法,主要应用于多体动力学仿真软件,包括:

S310,获取由用户在本地端输入的第一碰撞模型及第二碰撞模型。

用户通过本地端输入第一碰撞模型及第二碰撞模型。

S320,对第一碰撞模型进行离散化,获取与第一碰撞模型对应的棱边参数。

对为多面体的第一碰撞模型进行离散化,其中离散化后的第一碰撞模型形成多个端点以及与位于端点之间的多个直线,获取与第一碰撞模型对应的棱边参数,其中棱边参数与多个直线对应。

其中,棱边参数可以包括但不限于:多个直线的坐标参数。

S330,根据棱边参数中的直线部分位于第二碰撞模型之内,确定第一碰撞模型与第二碰撞模型的碰撞方式为第二碰撞方式。

其中,第二碰撞方式为第一碰撞模型与第二碰撞模型为线接触碰撞方式。需要指出的是,第二碰撞方式为多面体的棱边穿过圆柱体,即第一碰撞模型离散化后获取的直线穿过第二碰撞模型,且第一碰撞模型的端点不在第二碰撞模型内部或表面。其中直线穿过第二碰撞模型包括直线部分位于第二碰撞模型内部或表面。

在该步骤中,根据棱边参数中存在直线部分位于第二碰撞模型之内,则确定第一碰撞模型与第二碰撞模型的碰撞方式为第二碰撞方式。

S340,根据第二碰撞方式及棱边参数,获取第一碰撞模型穿过第二碰撞模型的第一碰撞线及与第一碰撞线对应的第二碰撞点和第二嵌入深度。

第一碰撞线可以为第一碰撞模型嵌入第二碰撞模型中嵌入深度最大的直线,其中第二嵌入深度可以为第一碰撞模型嵌入第二碰撞模型的嵌入深度。第二碰撞点可以为第一碰撞线穿过第二碰撞模型部分的中点,应该理解,第一碰撞线穿过第二碰撞模型时会形成两个交点,第二碰撞点可以为两个交点的中点。其中,第一碰撞线的嵌入深度可以为第二碰撞点的嵌入深度。可以理解,第二嵌入深度可以为第二碰撞点的嵌入深度。

根据第一碰撞模型与第二碰撞模型之间的碰撞方式为与线接触碰撞方式对应的第二碰撞方式,通过离散化处理第一碰撞模型获取的棱边参数,获取第一碰撞模型位于第二碰撞模型内的第一碰撞线及与第一碰撞线对应的第二碰撞点和第二嵌入深度。

在一些实施方式中,第一碰撞线与第二碰撞模型具有两个交点。

在一些实施方式中,第一碰撞线与第二碰撞模型的两个交点可以分别位于第二碰撞模型的端面及侧面。第二碰撞点为两个交点之间的中点。

在一些实施方式中,第一碰撞线与第二碰撞模型的两个交点可以均位于第二碰撞模型的侧面。需要说明的是,两个交点可以均位于第二碰撞模型的侧面时,两个交点均不在圆柱内部,而是刚好在侧面的面上,此时,第一碰撞线相当于处于第二碰撞模型的侧面边缘。第二碰撞点为两个交点中与第二碰撞模型最近端面之间的垂线距离最小者。其中交点到第二碰撞模型最近端面的垂线距离为该第一碰撞线的嵌入深度。具体的,两个交点与第二碰撞模型最近端面之间的垂线距离相同时,第二碰撞点可以为两个交点之间的中点,并且该中点与第二碰撞模型最近端面之间的垂线距离为该第一碰撞线的第二嵌入深度。

在一些实施方式中,第一碰撞线可以是第一碰撞模型离散化后获取的多个直线中嵌入第二碰撞模型的嵌入深度最大的直线。可以理解,第二碰撞模型离散化后可以包括多个直线,其中第一碰撞线为多个直线中嵌入第二碰撞模型的嵌入深度最大的直线。

具体的,与第二碰撞点对应的第二嵌入深度计算方式可以采用步骤S240中计算第一嵌入深度的方法进行计算,具体计算过程可以参考本申请对第一嵌入深度的计算方法所阐述内容,此处,不再进行赘述。

在一些实施方式中,当多个直线的嵌入深度相同时,嵌入深度相同多个直线的均值对应的点作为第二碰撞点,第二嵌入深度为该第二碰撞点的嵌入深度。可以理解,第一碰撞模型可以存在多个直线穿过第二碰撞模型,若存在多个直线的嵌入第二碰撞模型的嵌入深度相同,则取对应多个直线位于第二碰撞模型内的中点均值作为第二碰撞点,该第二碰撞点的嵌入深度即为第二嵌入深度。

S350,根据第二碰撞点和第二嵌入深度对第一碰撞模型与第二碰撞模型进行碰撞计算,获取仿真结果。

在确定第一碰撞模型的第二碰撞点及第二碰撞点对应的第二嵌入深度后,根据上述两种参数对第一碰撞模型与第二碰撞模型进行碰撞计算,获取两个碰撞模型的仿真结果。

其中仿真结果可以包括但不限于:输出第一碰撞模型与第二碰撞模型之间的碰撞力。当然,仿真结果还可以包括输出第二碰撞点的位置信息及第二嵌入深度。

在该实施例中,本申请的技术方案,通过对第一碰撞模型离散化获取与多个直线对应的棱边参数,通过离散化第一碰撞模型后获取的棱边参数,判断第一碰撞模型与未离散化的第二碰撞模型之间是否为线接触碰撞对应的第二碰撞方式,再根据线接触碰撞采用对应的预设计算方法计算仿真结果,有效提高对第一碰撞模型与第二碰撞之间发生线接触碰撞的碰撞检测精度。

图5是本申请实施例示出的仿真方法的另一流程示意图。

参见图5,本申请的仿真方法,主要应用于多体动力学仿真软件,包括:

S410,获取由用户在本地端输入的第一碰撞模型及第二碰撞模型。

用户通过本地端输入第一碰撞模型及第二碰撞模型。

S420,对第二碰撞模型进行离散化,获取与第二碰撞模型侧面对应的直线参数。

其中第二碰撞模型为圆柱体,对第二碰撞模型离散化处理可以获取与第二碰撞模型侧面对应的多个直线,其中直线参数可以包括:多个直线的坐标参数。

S430,根据直线参数的直线部分或全部位于第一碰撞模型之内,确定第一碰撞模型与第二碰撞模型的碰撞方式为第三碰撞方式。

其中第三碰撞方式为第一碰撞模型与第二碰撞模型为面接触碰撞方式。需要指出的是,第三碰撞方式为圆柱嵌入多面体任一面内,即第二碰撞模型离散化后获取的直线部分或全部嵌入第二碰撞模型,其中嵌入第二碰撞模型的直线数量可以为至少一个。

根据直线参数中存在直线部分或全部位于第一碰撞模型之内,确定第一碰撞模型与第二碰撞模型的碰撞方式为第三碰撞方式。

S440,根据第三碰撞方式及直线参数,获取第二碰撞模型嵌入第一碰撞模型的第二碰撞线及与第二碰撞线对应的第三碰撞点和第三嵌入深度。

根据第一碰撞模型与第二碰撞模型之间的碰撞方式为与面接触碰撞方式对应的第三碰撞方式,通过离散化处理第二碰撞模型获取的直线参数,获取第二碰撞模型嵌入第一碰撞模型的第二碰撞线及与第二碰撞线对应的第三碰撞点和第三嵌入深度。

其中第二碰撞线可以为第二碰撞模型嵌入第一碰撞模型中嵌入深度最大的直线,其中第三嵌入深度可以为第二碰撞模型嵌入第一碰撞模型的嵌入深度。第三碰撞点可以为第二碰撞线嵌入第一碰撞模型中嵌入深度最大的端点。

其中,第三嵌入深度可以是第三碰撞点到第二碰撞模型中所有面的距离中最小值。其中第二碰撞模型嵌入第一碰撞模型的方向可以是第三碰撞点到第二碰撞模型中面的距离最小值所对应的面的法向量。其中,第三碰撞点到第二碰撞模型中所有面的距离中最小值为多个时,可以取该多个面的多个法向量均值作为第二碰撞模型嵌入第一碰撞模型的方向。

在一些实施方式中,获取第二碰撞线可以先判断第一碰撞模型与第二碰撞模型的接触面,然后根据接触面获取与第一碰撞模型距离最小的直线作为第二碰撞线。

其中,可以根据第一碰撞模型与第二碰撞模型的位置关系获取第一碰撞模型上与第二碰撞模型发生接触的接触面。例如,根据第一碰撞模型与第二碰撞模型的坐标参数即可获取第二碰撞模型相对于第一碰撞模型的方位信息,根据该方位信息即可获取第一碰撞模型上与第二碰撞模型对应的接触面。

其中,可以根据接触面进行叉乘计算获取第二碰撞线。具体的,获取第一碰撞模型上与第二碰撞模型发生接触的接触面,根据接触面的法向量与第二碰撞模型的轴心线进行叉乘获取第一辅助线,再通过辅助线与该轴心线叉乘获取第二辅助线,其中直线参数中通过第二辅助线的直线即为第二碰撞线。

S450,根据第三碰撞点和第三嵌入深度对第一碰撞模型与第二碰撞模型进行碰撞计算,获取仿真结果。

在确定第二碰撞模型的第三碰撞点及第三碰撞点对应的第三嵌入深度后,根据上述两种参数对第一碰撞模型与第二碰撞模型进行碰撞计算,获取两个碰撞模型的仿真结果。

其中仿真结果可以包括但不限于:输出第一碰撞模型与第二碰撞模型之间的碰撞力。仿真结果还可以包括输出第三碰撞点的位置信息及第三嵌入深度。

在该实施例中,本申请的技术方案,通过对第二碰撞模型离散化获取与形成侧面的多个直线对应的直线参数,通过离散化第二碰撞模型后获取的直线参数,判断第二碰撞模型与未离散化的第一碰撞模型之间是否为面接触碰撞对应的第三碰撞方式,再根据面接触碰撞计算仿真结果,有效提高对第一碰撞模型与第二碰撞之间发生面接触碰撞的碰撞检测精度。

图6是本申请实施例示出的仿真方法的另一流程示意图。

参见图6,本申请的仿真方法,主要应用于多体动力学仿真软件,包括:

S510,获取由用户在本地端输入的第一碰撞模型及第二碰撞模型。

用户通过本地端输入第一碰撞模型及第二碰撞模型。

S520,对第一碰撞模型或第二碰撞模型进行离散化处理,获取与第一碰撞模型或第二碰撞模型对应的模型离散参数。

在该步骤中,在该步骤中,通过对第一碰撞模型或第二碰撞模型进行离散化处理,其中对第一碰撞模型离散化处理后,可以获取与第一碰撞模型或第二碰撞模型对应的模型离散参数,其中模型离散参数可以包括与第一碰撞模型对应的端点及与端点连接的棱边、与第二碰撞模型侧面对应的多个直线。模型离散参数可以包括但不限于:与第一碰撞模型对应的端点参数、与第一碰撞模型对应的棱边参数、与第二碰撞模型侧面对应的直线参数。

S530,采用三步法的方式并根据模型离散参数与另一模型的位置关系,判断第一碰撞模型与第二碰撞模型的碰撞方式为第一碰撞方式、第二碰撞方式或第三碰撞方式。

在该步骤中,采用三步法的方式判断第一碰撞模型与第二碰撞模型之间的碰撞方式是否为第一碰撞方式、第二碰撞方式或第三碰撞方式。其中,第一碰撞方式为第一碰撞模型与第二碰撞模型为点接触碰撞方式。第二碰撞方式为第一碰撞模型与第二碰撞模型为线接触碰撞方式。第三碰撞方式为第一碰撞模型与第二碰撞模型为面接触碰撞方式。

应该理解,采用三步法的方式对两个模型的碰撞方式进行判断,可以依序判断两个模型之间的碰撞是否为第一碰撞方式、第二碰撞方式及第三碰撞方式,当确定碰撞方式后则不再进行后一碰撞方式判断。例如,当判断两个模型之间为第一碰撞方式后,则不再进行第二碰撞方式及第三碰撞方式判断,有效减少运算负荷,提高碰撞检测效率。

其中,对第一碰撞模型与第二碰撞模型之间的碰撞方式判断,可以采用图2、图4及图5所示实施例中分别判断第一碰撞方式、第二碰撞方式及第三碰撞方式的方法步骤。

具体的,采用三步法的方式对两个模型的碰撞方式进行判断可以是先采用图2所述实施例中步骤S220至步骤S230的方法,判断第一碰撞模型与第二碰撞模型之间的碰撞方式是否为第一碰撞方式,当判断第一碰撞模型与第二碰撞模型之间的碰撞方式不是第一碰撞方式时,即端点参数中的端点没有位于第二碰撞模型之内时,再采用图4所述实施例中步骤S320至步骤S330的方法,判断第一碰撞模型与第二碰撞模型之间的碰撞方式是否为第二碰撞方式,当判断第一碰撞模型与第二碰撞模型之间的碰撞方式不是第二碰撞方式时,即棱边参数中的直线没有部分位于第二碰撞模型之内时,再采用图5所述实施例中步骤S420至步骤S430的方法,判断第一碰撞模型与第二碰撞模型之间的碰撞方式是否为第三碰撞方式。

在一些实施方式中,采用三步法的方式对两个模型的碰撞方式进行判断过程中,对第一碰撞方式、第二碰撞方式或第三碰撞方式的判断顺序可以根据实际需求设置。可以理解,第一碰撞方式、第二碰撞方式或第三碰撞方式的判断顺序可以根据实际使用需求设置,例如可以先进行第二碰撞方式判断,然后再进行第一碰撞方式判断,最后再进行第三碰撞方式判断。

S540,根据碰撞方式及模型离散参数对第一碰撞模型与第二碰撞模型进行碰撞检测计算,获取仿真结果。

在确定第一碰撞模型与第二碰撞模型之间的碰撞方式后,根据对模型进行离散化处理后获取的模型离散参数对第一碰撞模型与第二碰撞模型进行碰撞检测计算,获取仿真结果。

其中,预设计算方法可以是与采用图2、图4及图5所示实施例中分别对应第一碰撞方式、第二碰撞方式及第三碰撞方式的步骤的计算步骤,实现第一碰撞模型与第二碰撞模型之间的碰撞检测计算。

具体的,第一碰撞模型与第二碰撞模型之间的碰撞方式确定为第一碰撞方式后,可以采用图2中所述实施例中步骤S240至步骤S250的方法计算与第一碰撞方式对应的仿真结果;第一碰撞模型与第二碰撞模型之间的碰撞方式确定为第二碰撞方式后,可以采用图3中所述实施例中步骤S340至步骤S350的方法计算与第一碰撞方式对应的仿真结果;第一碰撞模型与第二碰撞模型之间的碰撞方式确定为第三碰撞方式后,可以采用图4中所述实施例中步骤S440至步骤S450的方法计算与第一碰撞方式对应的仿真结果。

其中,在本申请的技术方案中,对碰撞力计算可以采用以下公式:

其中,F为碰撞力;Kn为刚度系数;Gn为阻尼系数;depth为嵌入深度;STIFFNESS为刚度;DAMPING为阻尼;DMAX.ratio为计算比例的全阻尼嵌入深度,其中depth位于0至Dmax的时候,DMAX.ratio取值为DMAX*(depth/DMAX),depth大于Dmax的时候,DMAX.ratio取值为DMAX;EXPONENT为刚度法向力影响因子;v为碰撞点的相对碰撞物移动速度。

其中,STIFFNESS、DAMPING、DMAX、EXPONENT、v为碰撞点的相对碰撞物移动速度等参数可以通过文本输入的方式进行预设。

在该实施例中,本申请的技术方案,通过三步法判断离散化后的碰撞模型判断模型之间的碰撞方式,再根据碰撞方式对碰撞模型计算仿真结果,利用不同碰撞方式采用不同方法计算,有效提高碰撞检测过程的精度,并且在碰撞检测过程中,通过离散化后的点、线参数与面参数之间实现计算仿真结果,免去传统技术中需要对模型进行三角面片后通过面与面实现计算过程,有效缩短碰撞检测时间,提高仿真测量速度。

与前述应用功能实现方法实施例相对应,本申请还提供了一种的仿真装置、电子设备及相应的实施例。

图7是本申请实施例示出的仿真装置的结构示意图。

参见图7,的仿真装置,包括输入模块610、离散模块620、碰撞预处理模块630、碰撞计算模块640。

输入模块610,用于获取第一碰撞模型及第二碰撞模型。第一碰撞模型可以为由多个平面和端点组成的多面体,其中第一碰撞模型可以包括但不限于正方体、长方体等多面体,例如第一碰撞模型还可以是五角柱、六角柱。第二碰撞模型为圆柱体。

离散模块620,用于对第一碰撞模型或第二碰撞模型进行离散化处理,获取与第一碰撞模型或第二碰撞模型对应的模型离散参数。

在一些实施方式中,离散模块620可以对第一碰撞模型进行离散化,获取与第一碰撞模型对应的端点参数。

在一些实施方式中,离散模块620可以对第一碰撞模型进行离散化,获取与第一碰撞模型对应的棱边参数。

在一些实施方式中,离散模块620可以对第二碰撞模型进行离散化,获取与第二碰撞模型侧面对应的直线参数。

在一些实施方式中,对第一碰撞模型或第二碰撞模型的离散化结果可以是获取与第一碰撞模型对应的端点及与端点连接的棱边相关参数,或者是获取与第二碰撞模型对应的侧面对应的多个直线相关参数。

碰撞预处理模块630,用于根据模型离散参数与另一模型的位置关系,确定第一碰撞模型与第二碰撞模型之间的碰撞方式。

在一些实施方式中,第一碰撞模型与第二碰撞模型之间的碰撞方式可以包括第一碰撞方式、第二碰撞方式及第三碰撞方式。第一碰撞方式可以是第一碰撞模型与第二碰撞模型发生点接触,第二碰撞方式可以是第一碰撞模型与第二碰撞模型发生线接触,第三碰撞方式可以是第二碰撞模型与第一碰撞模型发生面接触。其中只对第一碰撞模型进行离散化处理的结果可以用于判断第一碰撞方式、第二碰撞方式,只对第二碰撞模型进行离散化处理的结果可以用于判断第三碰撞方式。

在一些实施方式中,碰撞预处理模块630可以根据端点参数中的端点位于第二碰撞模型之内,确定第一碰撞模型与第二碰撞模型的碰撞方式为第一碰撞方式。

在一些实施方式中,碰撞预处理模块630可以根据棱边参数中的直线部分位于第二碰撞模型之内,确定第一碰撞模型与第二碰撞模型的碰撞方式为第二碰撞方式。

在一些实施方式中,碰撞预处理模块630可以根据直线参数的直线部分或全部位于第一碰撞模型之内,确定第一碰撞模型与第二碰撞模型的碰撞方式为第三碰撞方式。

碰撞计算模块640,用于根据碰撞方式及模型离散参数对第一碰撞模型与第二碰撞模型进行碰撞检测计算,获取仿真结果。

在该实施例中,本申请的技术方案,通过对其中一个模型进行离散化,通过离散化碰撞模型后获取的模型离散参数,通过模型离散参数与另一模型的位置关系判断模型之间的碰撞方式,再根据碰撞方式对碰撞模型计算仿真结果,免去传统技术中需要对模型进行三角面片处理过程,有效缩短碰撞检测时间,提高仿真测量速度。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不再做详细阐述说明。

图8是本申请实施例示出的电子设备的结构示意图。

参见图8,电子设备1000包括存储器1010和处理器1020。

处理器1020可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

存储器1010可以包括各种类型的存储单元,例如系统内存、只读存储器(ROM)和永久存储装置。其中,ROM可以存储处理器1020或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器1010可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(例如DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器1010可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等)、磁性软盘等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。

存储器1010上存储有可执行代码,当可执行代码被处理器1020处理时,可以使处理器1020执行上文述及的方法中的部分或全部。

此外,根据本申请的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本申请的上述方法中部分或全部步骤的计算机程序代码指令。

或者,本申请还可以实施为一种计算机可读存储介质(或非暂时性机器可读存储介质或机器可读存储介质),其上存储有可执行代码(或计算机程序或计算机指令代码),当可执行代码(或计算机程序或计算机指令代码)被电子设备(或服务器等)的处理器执行时,使处理器执行根据本申请的上述方法的各个步骤的部分或全部。

以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实施例。

相关技术
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 模态框构建方法、装置、电子设备、计算机可读存储介质
  • 电子设备、音量调节方法及装置、计算机可读存储介质
  • 数据库同步恢复方法、装置、计算机可读存储介质和电子设备
  • 数据处理方法、装置、计算机可读存储介质和电子设备
  • 仿真方法及仿真装置、电子设备和计算机可读存储介质
  • 仿真验证方法、装置、电子设备和计算机可读存储介质
技术分类

06120115918123