浙江大学学报(工学版), 2019, 53(6): 1148-1156 doi: 10.3785/j.issn.1008-973X.2019.06.014

机械与能源工程

颗粒团聚过程准确碰撞检测快速算法

王亚飞,, 黄群星,, 王飞, 池涌, 严建华

High-speed algorithm for accurate collision detection during particle aggregation

WANG Ya-fei,, HUANG Qun-xing,, WANG Fei, CHI Yong, YAN Jian-hua

通讯作者: 黄群星,男,教授. orcid.org/0000-0003-1557-3955. E-mail: hqx@zju.edu.cn

收稿日期: 2018-11-12  

Received: 2018-11-12  

作者简介 About authors

王亚飞(1987—),男,博士生,从事火焰中碳黑颗粒研究.orcid.org/0000-0002-3585-7237.E-mail:wangyafei@zju.edu.cn , E-mail:wangyafei@zju.edu.cn

摘要

碰撞检测的传统算法在应对大量颗粒碰撞团聚时往往执行效率低下,为此提出一种基于“包围球-最大检测区域”预处理的两步式准确碰撞检测快速算法. 粗略筛选阶段:所有团聚体用更新成本低的包围球替代表示,并将包围球间的碰撞检测转变为求解关于时间的一元二次方程问题,通过并行求解这些方程快速筛选出所有可能发生的碰撞;忽略最大检测区域外的碰撞检测以进一步缩短执行时间. 精细确定阶段:采用离散碰撞检测快速确定碰撞发生的具体时间和位置;在该阶段,采样时间间隔是自适应的且逐渐减小. 将模拟计算结果与未优化的传统算法结果进行对比后发现,在满足相同碰撞检测准确性的前提下,提出的算法将执行效率提升了10~30倍,表明此算法更加适用于大量颗粒团聚过程中的碰撞检测.

关键词: 颗粒团聚 ; 碰撞检测 ; 包围球 ; 最大检测区域

Abstract

The traditional algorithms of collision detection often have poor execution efficiency in dealing with the aggregation following collision of a large number of particles. Therefore, a two-step, fast and accurate algorithm of collision detection was proposed based on the pretreatment of bounding sphere and maximum detection region. In the broad phase, all aggregates were represented by bounding spheres with low update cost. The detection of collisions between bounding spheres was converted into solving the problem of quadratic equations regarding time, and all possible collisions were detected fast by solving these equations parallelly. The detection of collisions outside the maximum detection region was ignored to further reduce execution time. In the narrow phase, the specific time and position of collisions were rapidly determined by discrete collision detection, where sampling time intervals were self-adaptive and decreasing. Simulation results were compared with those by non-optimized traditional algorithms, and it was found that, on the premise of meeting the same accuracy of collision detection the algorithm proposed here could increase the execution efficiency 10 to 30 times, indicating that this algorithm is more applicable to collision detection during the aggregation process of a large number of particles.

Keywords: particle aggregation ; collision detection ; bounding sphere ; maximum detection region

PDF (1519KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

王亚飞, 黄群星, 王飞, 池涌, 严建华. 颗粒团聚过程准确碰撞检测快速算法. 浙江大学学报(工学版)[J], 2019, 53(6): 1148-1156 doi:10.3785/j.issn.1008-973X.2019.06.014

WANG Ya-fei, HUANG Qun-xing, WANG Fei, CHI Yong, YAN Jian-hua. High-speed algorithm for accurate collision detection during particle aggregation. Journal of Zhejiang University(Engineering Science)[J], 2019, 53(6): 1148-1156 doi:10.3785/j.issn.1008-973X.2019.06.014

流体中的微小颗粒往往因布朗运动经碰撞后形成结构复杂的颗粒团聚体,如悬浮液中絮状物的形成和火焰中碳黑分形结构的形成等. 为模拟其团聚过程,国内外学者提出了相应的颗粒团聚模型. Kusaka等[1]为研究高浓度悬浮液中絮状物的形成过程,提出了一种非格点-扩散限制-颗粒簇团聚模型. 笔者[2]考虑火焰温度、粒径分布和体积分数等关键因素后,提出了一种模拟扩散火焰中碳黑基础颗粒团聚过程的布朗动力学模型. 这些模型尽管在实现过程上不尽相同,都需考虑颗粒或团聚体间的碰撞检测问题.

碰撞检测是机器人、电脑游戏和虚拟现实等领域的经典问题,其目的是确定不同物体在运动过程中是否存在碰撞及碰撞发生的时间和位置,传统的碰撞检测算法多是针对这些领域提出. 当大量颗粒碰撞团聚时,已有的团聚体会因新颗粒或颗粒簇的加入而不断发生形状变化. 对可变形物体的碰撞检测主要有如下几种传统算法:层次包围盒法、空间分割法和图像空间法. 常用的包围盒类型有:轴对齐包围盒(axis-aligned bounding box, AABB)、有向包围盒(oriented bounding box, OBB)和固定方向凸包(fixed direction hull, FDH)[3-4]. 然而,团聚体的逐渐长大和不停旋转迫使上述包围盒不断更新且成本较高,这极大地降低了碰撞检测的执行效率. 空间分割法的数据存储量大且灵活性差[5-6],而图像空间法无法提供准确的碰撞信息[7-8],因此,很难将空间分割法和图像空间法用于大量颗粒团聚过程中的精细碰撞检测.

针对目前传统算法存在执行效率低和准确性差等问题,本文结合颗粒团聚过程的自身特点,提出一种基于“包围球-最大检测区域”预处理的两步式碰撞检测算法,并将其与传统算法对比,验证其高效性和准确性.

1. 碰撞检测预处理

1.1. 包围球

相较于其他类型的包围盒,包围球(bounding sphere,BS)的结构更加简单,更新成本更低且无需因团聚体的旋转而不停更新. 本文中,单一颗粒的包围球就是其本身,无需构建;团聚体的包围球被设定为一个恰好完全包含团聚体的球且包围球的球心与团聚体的质心重合,如图1所示. 一般地,团聚体中所有颗粒的密度可认为相同,则其包围球的球心坐标C和半径R可表示为

图 1

图 1   团聚体的包围球示意图

Fig.1   Schematic diagram of bounding sphere of aggregates


$\left. \begin{aligned} {{C}} =& {\left.{\left( {\displaystyle\sum\limits_{i = 1}^{{N_{\rm{p}}}} {{x_i}r_i^3},\; \displaystyle\sum\limits_{i = 1}^{{N_{\rm{p}}}} {{y_i}r_i^3},\; \sum\limits_{i = 1}^{{N_{\rm{p}}}} {{z_i}r_i^3} } \right)} \right/ {\displaystyle\sum\limits_{i = 1}^{{N_{\rm{p}}}} {r_i^3} }},\\ R =& \max\; ({l_1} + {r_1},\,\cdots,\,{l_i} + {r_i},\,\cdots,\,{l_{{N_{\rm{p}}}}} + {r_{{N_{\rm{p}}}}}). \end{aligned} \right\}$

式中:(xiyizi)和ri分别为团聚体中第i个颗粒的球心坐标和半径,li为团聚体中第i个颗粒球心到团聚体质心的距离,Np为团聚体中颗粒的数量.

1.2. 最大检测区域

在颗粒团聚过程中,为模拟其布朗运动[9-11],所有单一颗粒和团聚体的平移速度vt和旋转速度vr(绕团聚体的质心旋转)每隔一个模拟时间步长δt就需重新初始化[1-2, 9, 12]. 由于颗粒的数量大且布朗运动的速度快,在每个δt内可发生多次碰撞[1-2,12]. 如图2所示,当最近一个碰撞k发生时,累计的已耗时间te可表示为

图 2

图 2   已耗时间与剩余时间的图例说明

Fig.2   Illustration of elapsed time and remaining time


${t_{\text{e}}} = \sum\nolimits_{j = 1}^k {{t_{{\text{c}},j}}} .$

式中:tc, j(2 ≤ jk)为已发生的碰撞j与已发生的碰撞j –1间的时间间隔,tc, 1为已发生的碰撞1与模拟时间步长开端间的时间间隔. 因此,下一个将要发生的碰撞k + 1与已发生的碰撞k间的时间间隔不会超过该模拟时间步长的剩余时间tr,且tr可表示为

${t_{\text{r}}} = \delta t - \sum\nolimits_{j = 1}^k {{t_{{\text{c}},j}}} .$

换言之,在下一个碰撞或新的模拟时间步长到来之前,单一颗粒或团聚体沿XYZ三轴方向的最大位移分别为

${L_{0,\rm x}} = \left| {{{ v}_{\rm t,x}}} \right|{t_{{\rm r}}},{L_{\rm 0,y}} = \left| {{{ v}_{\rm t,y}}} \right|{t_{{\rm r}}},{L_{0,\rm z}} = \left| {{{ v}_{\rm t,z}}} \right|{t_{{\rm r}}}.$

式中:L0, xL0, yL0, z分别为单一颗粒或团聚体沿XYZ三轴的位移,vt, xvt, yvt, z分别为单一颗粒或团聚体平移速度沿XYZ三轴的分量. 假设vt, xvt, yvt, z分别沿XYZ三轴的正方向,在下一个碰撞k + 1或新的模拟时间步长到来之前,每个单一颗粒或团聚体与其他单一颗粒或团聚体的碰撞必然发生在如下最大碰撞区域(maximum collision region,MCR)内:

${\rm MCR} = \left\{ {\begin{array}{*{20}{c}} {{x_0} - R \leqslant x \leqslant {x_0} + {L_{0,x}} + R} \\ {{y_0} - R \leqslant y \leqslant {y_0} + {L_{0,y}} + R} \\ {{z_0} - R \leqslant z \leqslant {z_0} + {L_{0,z}} + R} \end{array}} \right\}.$

式中:(x0y0z0)为单一颗粒或团聚体在碰撞k发生时其包围球的球心坐标.

当单一颗粒或团聚体的MCR确定后,其最大检测区域(maximum detection region,MDR)随之也可确定. 在下一个碰撞k + 1或新的模拟时间步长到来之前,仅MDR内的其他单一颗粒或团聚体可能与目标对象发生碰撞. 单一颗粒或团聚体(即目标对象)的MDR可表示为

$\begin{array}{l} {\rm MDR} = \\ \!\!\left\{ {\begin{array}{*{20}{c}} {{x_0} - {L_{1,x}} - R - {R_{\max }} \leqslant x \leqslant {x_0} + {L_{0,x}} + {L_{2,x}} + R + {R_{\max }}}\!\!\\ \!\!{{y_0} - {L_{1,y}} - R - {R_{\max }}\leqslant y \leqslant {y_0} + {L_{0,y}} + {L_{2,y}} + R + {R_{\max }}}\!\!\\ \!\!{{z_0} - {L_{1,z}} - R - {R_{\max }} \leqslant z \leqslant {z_0} + {L_{0,z}} + {L_{2,z}} + R + {R_{\max }}}\!\! \end{array}} \right\}. \end{array}$

式中:Rmax为下一个碰撞k + 1或新的模拟时间步长到来之前所有包围球半径的最大值,L1,x + RmaxL1,y + RmaxL1,z + Rmax分别为MCR和MDR对应的左、前和下壁面间的距离,L2,x + RmaxL2、y + RmaxL2,z + Rmax分别为MCR和MDR对应的右、后和上壁面间的距离. L1, xL1, yL1, zL2, xL2, yL2, z可根据下列式子得出:

$\left. \begin{aligned} &{L_{1,x}} = \left( {\left| { v}_{{\text{t,}}x,{\text{p}}\max} \right| - \left| {{ v}_{\rm t,x}} \right|} \right){t_{\text{r}}}, \\& {L_{1,y}} = \left( {\left| {{{ v}_{{{\rm t,}y}{,\text{p}\max}} }} \right| - \left| {{{ v}_{\rm t,y}}} \right|} \right){t_{\text{r}}}, \\& {L_{1,z}} = \left( {\left| {{{ v}_{{{\rm t,}z}{,{\text{p}}\max}} }} \right| - \left| {{{ v}_{\rm t,z}}} \right|} \right){t_{\text{r}}},\\& {L_{2,x}} = \left| {{{ v}_{{{\rm t,}x}{,{\text{n}}\max}} }} \right|{t_{\text{r}}}, \\& {L_{2,y}} = \left| {{{ v}_{{{\rm t,}y}{,{\text{n}}\max }}}} \right|{t_{\text{r}}}, \\& {L_{2,z}} = \left| {{{ v}_{{{\rm t,}z}{,{\text{n}}\max }}}} \right|{t_{\text{r}}}. \end{aligned} \right\}$

式中:vt, x, pmaxvt, y, pmaxvt, z, pmax分别为所有单一颗粒和团聚体平移速度沿XYZ三轴正方向分量的最大值,vt, x, nmaxvt, y, nmaxvt, z, nmax分别为所有单一颗粒和团聚体平移速度沿XYZ三轴负方向分量的最大值. 为直观理解MCR和MDR的构造及其关系,图3给出了其示意图. 需要指出的是,式(5)和(6)仅是在目标对象vt, xvt, yvt, z的方向沿XYZ三轴正方向的情况下得出的,其他7种情况下的MCR和MDR表达式可类比得出,不再赘述. MDR的引入可有效避免目标对象与整个模拟区域内其他所有单一颗粒或团聚体间的暴力碰撞检测,仅考虑与其MDR内的其他单一颗粒或团聚体间的碰撞检测即可,从而大大节省碰撞检测的执行时间.

图 3

图 3   MCR和MDR的构造关系

Fig.3   Structural relation of MCR and MDR


2. 碰撞检测主过程

2.1. 粗略筛选

在粗略筛选阶段(broad phase,BP),模拟区域内的所有单一颗粒和团聚体皆用其包围球替代表示. 显然,当两包围球的球心间距等于两包围球的半径之和时,两包围球发生碰撞,如图4所示. 从此结论出发,两包围球间的连续碰撞检测(continuous collision detection,CCD)可转变为求解下列关于时间的一元二次方程问题[13-14]

图 4

图 4   发生碰撞的两包围球的几何关系

Fig.4   Geometrical relation of two bounding spheres colliding with each other


$\left. \begin{array}{l} \Delta {{v}}_{{\rm t},0}^2{t^2} + 2\left( {\Delta {{{C}}_0} \cdot \Delta {{{v}}_{{\rm t},0}}} \right)t + \Delta {{C}}_0^2 - {\left( {{R_{i,0}} + {R_{j,0}}} \right)^2} = 0,\\ \Delta {{{v}}_{{\rm t},0}} = {{{v}}_{{\rm t},j,0}} - {{{v}}_{{\rm t},i,0}}, \Delta {{{C}}_0} = {{{C}}_{j,0}} - {{{C}}_{i,0}}. \end{array} \!\!\!\!\!\!\right\}$

式中:t为发生碰撞的时间且t从最近已发生的碰撞k开始算起,vt, i, 0vt, j, 0分别为包围球ijt = 0时的平移速度,Ci, 0Cj, 0分别为包围球ijt = 0时的球心坐标,Ri, 0Rj, 0分别为包围球ijt = 0时的半径. 上述方程是否有解,可通过下列判别式的符号来确定:

$D = 4\left[ {{{\left( {\Delta {{ C}_0} \cdot \Delta {{ v}_{{\rm t},0}}} \right)}^2} - \left( {\Delta { C}_0^2 - {{\left( {{R_{1,0}} + {R_{2,0}}} \right)}^2}} \right)\Delta { v}_{{\rm t},0}^2} \right]$

D < 0时,式(8)无解,即两包围球不会发生碰撞;当 D ≥ 0时,式(8)有解:

$\left. \begin{array}{l} {t_1} = {{\left[ { - \left( {\Delta {{{C}}_0} \cdot \Delta {{{v}}_{{\rm t},0}}} \right) - \sqrt {{D / 4}} } \right]} / {\Delta {{v}}_{{\rm t},0}^2}},\\ {{ t}_2} = {{\left[ { - \left( {\Delta {{{C}}_0} \cdot \Delta {{{v}}_{{\rm t},0}}} \right) + \sqrt {{D / 4}} } \right]} / {\Delta {{v}}_{{\rm t},0}^2.}} \end{array} \right\}$

D ≥ 0时,t2t1. 需要注意的是,碰撞检测是对时间域(0, tr]内未来事件的预测,因此0<ttr. 也就是说,即便式(8)有解,两包围球也不一定会发生碰撞. 例如,当0 > t2t1时,两包围球已飞离彼此,只是在其平移运动反方向的延长线上发生了碰撞;当trt2 ≥ 0 ≥ t1t2 > tr > 0 ≥ t1时,两包围球在t = 0时已处于相切或相交状态,并将在t = t2时分离或在t = tr时速度初始化,进入下一个模拟时间步长;当t2t1 > tr时,两包围球在t = tr时速度初始化,进入下一个模拟时间步长. 因此,仅当trt2t1 > 0或 t2 > trt1 > 0时,两包围球将在 t = t1时发生碰撞,假设两包围球碰撞后仍按原平移方向继续运动,那么两者将在t = t2时分离或在t = tr时速度初始化,进入下一个模拟时间步长.

2.2. 精细确定

粗略筛选通过求解关于时间的一元二次方程将不可能发生的碰撞筛选掉. 然而,对将要发生碰撞的两包围球而言,当包围的目标对象至少有1个是团聚体时,团聚体的不停旋转可能导致两目标对象在时间域[T1T2]仍不会碰撞,其中时间域表示如下:

$[{T_1},{T_2}] = [{t_1},\min ({t_2},{t_{\rm r}})].$

因此,精细确定阶段(narrow phase,NP)采用一种基于时间域[T1T2]的离散碰撞检测(discrete collision detection,DCD)方法[15-16]来判定可能发生的碰撞是否确实存在以及发生的具体时间与位置.

为提高碰撞检测的准确性,离散碰撞检测法所选用的采样时间间隔Δt应尽量小,但过小的Δt又将大大增加碰撞检测所需的执行时间. 为此,本文选用一种自适应的、先疏后密的时间间隔策略,首层碰撞检测的时间间隔Δt1表示如下:

$\Delta {t_1} = {{{r_{\min }}} / {\left| {\Delta {{{v}}_{{\rm t},0}}} \right|}}.$

式中:rmin为两目标对象中最小颗粒的半径. 那么,首层的离散采样时间点可如下表示:

$\left. \begin{aligned} t =& \left[ {{T_1},\,\cdots,\,{T_1} + s \cdot \Delta {t_1},\,\cdots,\,{T_2}} \right],\\ s =& 1,\,2,\,\cdots,\,\left\lfloor {{{\left( {{T_2} - {T_1}} \right)} / {\Delta {t_1}}}} \right\rfloor . \end{aligned} \right\}$

考虑到两目标对象仅能在其包围球相交区域内发生碰撞,相交区域外的碰撞检测可忽略. 精细确定阶段的详细实现步骤如下:

1)在指定采样时间点上,目标对象中每个颗粒的球心坐标可根据在t = 0时目标对象中每个颗粒的球心坐标以及目标对象的平移速度和旋转速度计算得到[2, 12]

2)如果T1 = T2,则两目标对象的包围球发生相切碰撞,只需检测当t = T1时两目标对象是否均存在颗粒表面与两包围球的碰撞点相切的情况,若存在,则两目标对象发生碰撞;如果T1 < T2,则采用图5中的颗粒碰撞检测策略对两包围球相交区域内两目标对象间的每对颗粒进行碰撞检测,若在所有采样时间点上均未发现碰撞,则两目标对象最终不发生碰撞,若在某个采样时间点上发现两目标物体间存在颗粒相切或相交的情况,则停止对剩下采样时间点的碰撞检测并进入下一步;

图 5

图 5   包围球相交区域内颗粒间的碰撞检测

Fig.5   Collision detection between particles in intersection of two bounding spheres


3)计算每对发生接触颗粒的球心间距与其半径之和的比值:

$\varepsilon = {{\left| {{{{{{c}}}}_{i,m}} - {{{{ c}}}_{j,n}}} \right|} \bigg/ {\left( {{r_{i,m}} + {r_{j,n}}} \right)}}.$

式中:ci, mcj, n分别为团聚体i中第m个颗粒和团聚体j中第n个颗粒的球心坐标,ri, mrj, n分别为团聚体i中第m个颗粒和团聚体j中第n个颗粒的半径. 考虑到现实的团聚体中存在颗粒表层重叠的现象[17]且检测出两颗粒恰好碰撞(ε = 1)极其耗时,将0.95 ≤ ε ≤ 1的两颗粒视为发生了有效碰撞,而ε< 0.95意味着两颗粒重叠过多,碰撞发生的时间点应回退. 如果每对发生接触的颗粒的ε均落在[0.95,1],则两目标对象被视为发生了碰撞,且碰撞点发生在ε最接近0.95的颗粒对之间. 如果存在某对颗粒的ε < 0.95的情况,则进入下一步;

4)在此层碰撞检测中,选用更小的时间间隔Δti (仅是上一层时间间隔Δti −1的1/10),从上一层的采样时间点回退,重复步骤2)~ 4),直到每对发生接触的颗粒的ε均落在[0.95,1]为止,最终找出两目标对象发生碰撞的准确时间和位置.

3. 实现结果分析

为验证上述优化算法的高效性和准确性,本文采用表1中的传统算法1和2[16]作为对比,算法3为本文所提出的算法. 团聚体同时具有的平移和旋转运动导致其组成颗粒的运动轨迹复杂,无法直接通过求解关于时间的一元二次方程来实施连续精细的碰撞检测. 因此,算法1和2在碰撞检测的全过程中均采用基于时间域的离散碰撞检测法,且其时间域均被设定为(0,tr]. 具体来讲,算法1的离散碰撞检测过程和第2.2节中的方法一样,需对两目标对象间每对颗粒进行精细碰撞检测;在算法2的离散碰撞检测过程中,首先判断两目标对象的AABB包围盒是否发生碰撞,如果2个包围盒发生碰撞,再对两目标对象间每对颗粒进行精细碰撞检测. 另外,算法1和2同样将0.95 ≤ ε ≤ 1的碰撞视为有效碰撞;将首层碰撞检测的采样时间间隔Δt1设定为式(12)的计算值,且下一层碰撞检测的采样时间间隔为上一层的1/10. 由于大量颗粒团聚过程中的碰撞检测涉及众多向量和矩阵运算,表1中的3种算法均采用Matlab语言编写并通过一台配有Intel Core i7-4.2 GHz处理器和DDR4-32 Gb内存的计算机完成执行任务.

表 1   两种传统算法和新算法的技术对比

Tab.1  Technical comparison of two traditional algorithms with new one

序号 预处理 主过程
算法 1 DCD (△t自适应且可变)
算法 2 AABB DCD (△t自适应且可变)
算法 3 BS+MDR CCD+DCD (△t自适应且可变)

新窗口打开| 下载CSV


将上述3种算法用于层流乙烯扩散火焰中轴线处碳黑基础颗粒团聚过程中单一碳黑基础颗粒或碳黑团聚体间的精细碰撞检测. 为验证模拟的碳黑团聚体与真实的碳黑团聚体在形态结构上的相似程度,笔者[2]在之前的研究中给出了图6(a)中层流乙烯扩散火焰中轴线处碳黑基础颗粒团聚过程的模拟,该模拟可给出不同火焰高度HAB上碳黑基础颗粒的团聚状态,如图7所示. 在本文所模拟的碳黑基础颗粒团聚过程中,基础颗粒的总数量Nt、碳黑体积分数fv和时间步长δt等关键模拟参数分别被设定为102~104、3×10−6和10−6 s,而其他相关模拟参数的设置和碰撞后两目标对象是否团聚及碰撞后速度的求解可参见文献[2]和[18].

图 6

图 6   层流乙烯扩散火焰中轴线处碳黑基础颗粒团聚过程

Fig.6   Primary soot particle aggregation along centerline of laminar ethylene diffusion flame


图 7

图 7   火焰中轴线处碳黑基础颗粒碰撞团聚过程的

Fig.7   Typical TEM images of primary soot particle aggregation along flame centerline and corresponding simulation images


利用图6(b)中的实验装置采集该火焰中轴线处不同火焰高度上的碳黑颗粒,对其进行大量的TEM图像分析以获取其形态结构参数,并据此验证模拟的效果. 一个碳黑团聚体的完整形态描述需要确定其碳黑基础颗粒粒径(dp)分布PDF、碳黑基础颗粒的数量N、分形维数Df和分形前向因子kf,这些形态结构参数的实验确定方法和模拟数据的获取方法请参见笔者之前的研究[2, 19]. 需要注意的是,在上述模拟中PDF(dp)是作为模拟的输入参数而非输出参数存在的,模拟效果根据碳黑团聚体的NDfkf的模拟值与实验值间的吻合度来评价.

在碳黑基础颗粒团聚过程的模拟中,为避免碳黑基础颗粒的空间位置和运动速度不同而导致碰撞事件(由参与碰撞的双方及其速度和位置共同决定)不同,下一轮碰撞检测开始时,所有碳黑基础颗粒的空间位置和运动速度均以上一轮算法3的碰撞检测结果作为初始条件. 在不考虑3种算法所需的执行时间且均能满足第2章提出的碰撞检测准确度的前提下,模拟结果显示上述3种算法均能准确地从众多可能发生的所有碰撞中检测出第一个将要发生的碰撞. 从图7中可以看出,模拟所得的碳黑颗粒云团的外貌形态和在对应火焰高度上实验捕捉到的基本一致,完整地呈现了原本单一离散分布的碳黑基础颗粒经碰撞后逐渐形成尺寸越来越大的碳黑团聚体的过程. 图8给出了模拟生成的碳黑团聚体与实验观测到的碳黑团聚体的形态结构直观对比,可以看出,模拟生成的碳黑团聚体与具有相近NDfkf的真实碳黑团聚体在形态结构上非常相似,且模拟的碳黑团聚体中没有出现碳黑基础颗粒过度重合(ε < 0.95)和相离( ε > 1)的情况. 图9给出了火焰中碳黑团聚体分形参数的实验确定值和相应的模拟值. 其中,Rg$\overline d_{\rm p}$分别为碳黑团聚体的回转半径和平均粒径,可以看出,火焰中碳黑团聚体分形参数的实验确定值: Df = 1.76和kf = 2.21,模拟值:Df = 1.73和kf = 2.15,两者吻合得较好. 图10给出了不同火焰高度上模拟生成的碳黑团聚体中碳黑基础颗粒的平均值 $\overline N$ 与实验测量值的比较,对比结果显示,两者吻得也较好.

图 9

图 9   碳黑团聚体分形参数的实验确定值和模拟值

Fig.9   Experimental determination values and simulation values for fractal properties of soot aggregates


图 8

图 8   模拟碳黑团聚体与实验捕捉到的真实碳黑团聚体的形态结构比较

Fig.8   Morphological comparison of simulated soot aggregates with real ones captured experimentally


图 10

图 10   不同火焰高度上碳黑团聚体中基础颗粒平均数的模拟值和实验确定值对比

Fig.10   Comparison of simulation values for mean primary particle number per simulated soot aggregate with experimental determination values at different flame heights


为了准确对比3种算法的执行效率,需要使用3种算法对相同的碰撞事件分别作出检测,以便获得其各自所需的执行时间. 图11给出了11种Nt条件下3种算法在每一轮碰撞检测中从众多将要发生的碰撞中准确检测出首个碰撞所需的平均执行时间:

图 11

图 11   3种算法碰撞检测执行时间和效率的对比

Fig.11   Comparison of average execution time and execution efficiency of collision detection using three algorithms


${t_{{\text{u}},{\text{avg}}}} = \sum\nolimits_{i = 1}^{{N_{\text{u}}}} {{t_{{\text{u}},i}}/{N_{\text{u}}}} ,$

式中:tu, i为第i轮碰撞检测中准确检测出首个碰撞所需的执行时间,Nu为所要执行的碰撞检测的总轮数且被设定为2 000. 从图11中可以看出,当Nt < 1 000时,3种算法的 tu, avg都较小(< 160 ms),且绝对差不大;当Nt > 1 000时,算法1和2的 tu, avgNt增长迅速,而算法3的tu, avgNt则增长相对缓慢,结果算法3的tu, avg远小于算法1和2的tu, avg. 算法3执行时间的大幅度降低主要得益于“包围球-最大检测区域”和粗略筛选的引入,这些处理方法显著缩减了所要检测的碰撞双方的数量和精细确定阶段离散碰撞检测的次数. 另外,算法3相对于算法1和2的执行效率的提升倍数Et可用如下公式表示:

$E_{\rm{t}}{\rm{ = }}{t_{\rm u,avg}}/{t_{\rm u,avg,3}}.$

式中:tu,avg,3为算法3的平均执行时间。图11给出了11种Nt条件下算法3相对于算法1和2的执行效率的提升倍数Et,可以看出,算法3相对于算法1可将执行效率提升15~30倍,相对于算法2可将执行效率提升 10左右。

当算法1和2的执行时间与算法3所需的执行时间一致时,采用算法1和2模拟得到的碳黑团聚体,如图12所示. 从图中可以看出,当执行时间一样时,算法1和2将没有足够的执行时间来避免碳黑基础颗粒间过度重叠的问题(即没时间回退),导致达不到指定的碰撞检测精度. 另外,算法1和2也可能没有足够的执行时间检测到原本将要发生的碰撞. 因此,当执行时间过少时,采用算法1和2生成的碳黑团聚体将和采用算法3生成的碳黑团聚体差别越来越大,最终模拟结束后很难找到符合要求的碳黑团聚体.

图 12

图 12   当算法1或2与算法3所需的执行时间一致时采用算法1和2模拟得到的团聚体

Fig.12   Simulated soot aggregtes using algorithms 1 or 2 when execution times are equal to those of algorithm 3


综上所述,在满足相同碰撞检测准确性的前提下,算法3执行效率更高,更适用于大量颗粒团聚过程中的碰撞检测.

4. 结 语

结合布朗颗粒团聚过程中其平移速度和旋转速度每隔一段极短时间就需要重新初始化的自身特点,本文提出了一种基于“包围球-最大检测区域”预处理的“粗略筛选-精细确定”两步式碰撞检测算法. 模拟测试结果表明:在保证相同的碰撞检测准确性的前提下,当参与团聚的总颗粒数Nt < 1 000时,该优化算法和传统碰撞检测算法在每一轮碰撞检测中从众多将要发生的碰撞中准确检测出首个碰撞所需的平均执行时间 tu, avg的绝对差值不大,皆少于160 ms;当Nt > 1 000时,传统碰撞检测算法的 tu, avgNt呈指数级增长,而该优化算法随Nt的增长却较为平缓,结果该优化算法的tu, avg远小于传统算法的tu, avg,且其可将碰撞检测的执行效率提升10~30倍. 所提出的更加高效的碰撞检测算法将有助于大规模颗粒团聚过程模拟的快速实现.

参考文献

KUSAKA Y, FUKASAWA T, ADACHIA Y

Cluster-cluster aggregation simulation in a concentrated suspension

[J]. Journal of Colloid and Interface Science, 2011, 363: 34- 41

DOI:10.1016/j.jcis.2011.07.024      [本文引用: 3]

WANG Y F, HUANG Q X, WANG F, et al

Brownian dynamics simulation of soot primary particle aggregation in laminar ethylene diffusion flames

[J]. Physica A, 2019, 514: 936- 947

DOI:10.1016/j.physa.2018.09.119      [本文引用: 7]

张忠辉, 丑武胜

可变形物体间的精确碰撞检测方法研究

[J]. 计算机工程与应用, 2009, 45 (1): 176- 178

DOI:10.3778/j.issn.1002-8331.2009.01.054      [本文引用: 1]

ZHANG Zhong-hui, CHOU Wu-sheng

Research on precise collision detection between deformable objects

[J]. Computer Engineering and Applications, 2009, 45 (1): 176- 178

DOI:10.3778/j.issn.1002-8331.2009.01.054      [本文引用: 1]

于瑞云, 赵金龙, 余龙, 等

结合轴对齐包围盒和空间划分的碰撞检测算法

[J]. 中国图像图形学报, 2018, 23 (12): 1925- 1937

[本文引用: 1]

YU Rui-yun, ZHAO Jin-long, YU Long, et al

Collision detection algorithm based on AABB bounding box and space division

[J]. Journal of Image and Graphics, 2018, 23 (12): 1925- 1937

[本文引用: 1]

孙劲光, 吴素红

基于空间分割与椭球包围盒的碰撞检测算法

[J]. 计算机工程与应用, 2016, 52 (4): 217- 222

DOI:10.3778/j.issn.1002-8331.1405-0105      [本文引用: 1]

SUN Jin-guang, WU Su-hong

Collision detection algorithm based on ellipsoid bounding box and spatial decomposition

[J]. Computer Engineering and Applications, 2016, 52 (4): 217- 222

DOI:10.3778/j.issn.1002-8331.1405-0105      [本文引用: 1]

李炎, 卢晓军, 贺汉根

USSCD: 一个基于均匀空间分割的快速碰撞检测算法

[J]. 中国图像图形学报, 2003, 8 (12): 1444- 1449

[本文引用: 1]

LI Yan, LU Xiao-jun, HE Han-gen

USSCD: a fast collision detection algorithm based on uniform spatial subdivision

[J]. Journal of Image and Graphics, 2003, 8 (12): 1444- 1449

[本文引用: 1]

范昭炜, 万华根, 高曙明

基于图像的快速碰撞检测算法

[J]. 计算机辅助设计与图形学报, 2002, 14 (9): 805- 810

[本文引用: 1]

FAN Zhao-wei, WAN Hua-gen, GAO Shu-ming

A fast collision detection algorithm in image space

[J]. Journal of Computer-Aided Design and Computer Graphics, 2002, 14 (9): 805- 810

[本文引用: 1]

邹益胜, 丁国富, 周晓莉, 等

一种基于图像空间的碰撞检测算法

[J]. 系统仿真学报, 2011, 23 (5): 944- 949

[本文引用: 1]

ZOU Yi-sheng, DING Guo-fu, ZHOU Xiao-li, et al

Collision detection algorithm based on image space

[J]. Journal of System Simulation, 2011, 23 (5): 944- 949

[本文引用: 1]

FOSS D R, BRADY J F

Brownian dynamics simulation of hard-sphere colloidal dispersions

[J]. Journal of Rheology, 2002, 44 (3): 629- 651

[本文引用: 2]

BANCHIO A J, BERGENHOLTZ J, NAGELE G

Rheology and dynamics of colloidal dispersions

[J]. Physical Review Letters, 1999, 82: 1792- 1795

DOI:10.1103/PhysRevLett.82.1792     

CHEN J C, KIM A S

Brownian dynamics, molecular dynamics, and Monte Carlo modeling of colloidal systems

[J]. Advances in Colloid and Interface Science, 2004, 112: 159- 173

DOI:10.1016/j.cis.2004.10.001      [本文引用: 1]

WATANABE M, TANAKA D

Brownian dynamics simulation of the aggregation of submicron particles in static gas

[J]. Computers and Chemical Engineering, 2013, 54: 151- 158

DOI:10.1016/j.compchemeng.2013.03.028      [本文引用: 3]

DOPERTCHOUK O. Simple bounding-sphere collision detection [EB/OL]. [2019-02-18]. https://www.gamedev.net/articles/programming/math-and-physics/simple-bounding-sphere-collision-detection-r1234.

[本文引用: 1]

ANDERSON L. Realistic billiards simulation with variable time-step [EB/OL]. [2019-02-18]. https://www.cs.rpi.edu/~cutler/classes/advancedgraphics/S09/final_projects/anderson.pdf.

[本文引用: 1]

黄伟益. 基于GPU并行加速碰撞检测算法的研究 [D]. 重庆: 重庆大学, 2015: 11–29.

[本文引用: 1]

HUANG Wei-yi. Research on collision detection algorithm based on GPU parallel speed up [D]. Chongqing: Chongqing University, 2015: 11–29.

[本文引用: 1]

水泳. 虚拟现实中连续碰撞检测算法研究 [D]. 合肥: 中国科学技术大学, 2013: 2–17.

[本文引用: 2]

SHUI Yong. Research on continuous collision detection algorithm in virtual reality [D]. Hefei: University of science and technology of China, 2013: 2–17.

[本文引用: 2]

DONER N, LIU F S

Impact of morphology on the radiative properties of fractal soot aggregates

[J]. Journal of Quantitative Spectroscopy and Radiative Transfer, 2017, 187: 10- 19

DOI:10.1016/j.jqsrt.2016.09.005      [本文引用: 1]

BOURG D M, BYWALEC B. Physics for game developers [M]. 2nd ed. Sebastopol: O’REILLY, 2013.

[本文引用: 1]

WANG Y F, HUANG Q X, WANG F, et al

A feasible and accurate method for calculating the radiative properties of soot particle ensembles in flames

[J]. Journal of Quantitative Spectroscopy and Radiative Transfer, 2019, 224: 222- 232

DOI:10.1016/j.jqsrt.2018.11.023      [本文引用: 1]

/