CN115346005B - 基于嵌套包围盒概念用于物面网格的数据结构构建方法 - Google Patents

基于嵌套包围盒概念用于物面网格的数据结构构建方法 Download PDF

Info

Publication number
CN115346005B
CN115346005B CN202211276405.9A CN202211276405A CN115346005B CN 115346005 B CN115346005 B CN 115346005B CN 202211276405 A CN202211276405 A CN 202211276405A CN 115346005 B CN115346005 B CN 115346005B
Authority
CN
China
Prior art keywords
grid
bounding box
nodes
dtree
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202211276405.9A
Other languages
English (en)
Other versions
CN115346005A (zh
Inventor
毕林
袁先旭
孟爽
李雪亮
罗灿炎
杜昊
陈浩
唐志共
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Computational Aerodynamics Institute of China Aerodynamics Research and Development Center
Original Assignee
Computational Aerodynamics Institute of China Aerodynamics Research and Development Center
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Computational Aerodynamics Institute of China Aerodynamics Research and Development Center filed Critical Computational Aerodynamics Institute of China Aerodynamics Research and Development Center
Priority to CN202211276405.9A priority Critical patent/CN115346005B/zh
Publication of CN115346005A publication Critical patent/CN115346005A/zh
Application granted granted Critical
Publication of CN115346005B publication Critical patent/CN115346005B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/23Design optimisation, verification or simulation using finite element methods [FEM] or finite difference methods [FDM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/28Design optimisation, verification or simulation using fluid dynamics, e.g. using Navier-Stokes equations or computational fluid dynamics [CFD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2113/00Details relating to the application field
    • G06F2113/20Packaging, e.g. boxes or containers

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Geometry (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Fluid Mechanics (AREA)
  • Mathematical Physics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请公开了一种基于嵌套包围盒概念用于物面网格的数据结构构建方法,由于目标体所包含的信息能够体现出某一物的结构、形状,同步本说明书中的方法在构建数据结构时将目标体体现出的结构、形状信息加以利用,以辅助数据结构的构建。此外,本说明书中的技术方案在构建数据结构时采用了K‑DTree和嵌套包围盒的概念,使得在判断网格单元与包围盒是否相交时快速排除无关网格单元,从而大幅提高判断效率,有利于提高数据查找的速度。本申请中的方法适用于行政、商业、金融、管理、监督或预测目的的数据处理系统或方法;其他类目不包含的专门适用于行政、商业、金融、管理、监督或预测目的的数据处理系统或方法。

Description

基于嵌套包围盒概念用于物面网格的数据结构构建方法
技术领域
本申请属于数据处理研究领域,特别涉及一种基于嵌套包围盒概念用于物面网格的数据结构构建方法。
背景技术
随着计算机技术的发展,借助于计算机的计算能力执行的数据处理,对技术的发展提供了助力。然而,数据结构一定程度的影响到了计算机对数据的处理效率。
可见,如何构建便于计算机进行处理的数据,成为亟待解决的问题。
发明内容
为了解决所述现有技术的不足,本申请提供了一种基于嵌套包围盒概念用于物面网格的数据结构构建方法,该方法适用于针对目标体数据的数据构建。目标体一方面物面网格可以通过数据集的方式进行表征;另一方面,目标体所包含的信息能够体现出某一物的结构、形状,采用本说明书中的方法,能够在构建数据结构时将目标体体现出的结构、形状信息加以利用,以辅助数据结构的构建。进一步地,本说明书中的技术方案在构建数据结构时采用了K-DTree和嵌套包围盒的概念,使得在判断网格单元与包围盒是否相交时快速排除无关网格单元,从而大幅提高判断效率,有利于提高数据查找的速度。示例性地,本说明书中的过程可以应用于流体力学仿真领域。本申请中的方法适用于行政、商业、金融、管理、监督或预测目的的数据处理系统或方法;其他类目不包含的专门适用于行政、商业、金融、管理、监督或预测目的的数据处理系统或方法。
本申请所要达到的技术效果通过以下方案实现:
第一方面,本说明书提供一种基于嵌套包围盒概念用于物面网格的数据结构构建方法,所述方法包括:
创建待定K-DTree;
确定物面网格的目标数据集G中未在待定K-DTree中对应有节点的网格单元的数量,其中,目标数据集G是基于目标体的数据构建的,所述目标体的物面由网格单元构成;
构建基础包围盒(Gimin, Gimax),其中,所述基础包围盒是将所述目标体包含其中的、体积最小包围盒;
根据所述网格单元的数量,将所述网格单元插入所述待定K-DTree的节点中,以建立所述网格单元与所述节点之间的对应关系,得到目标K-DTree;并且,根据网格单元与节点之间的对应关系,对所述基础包围盒进行剖分;
对包围盒的顶点进行存储,其中,所述包围盒包括所述基础包围盒和针对所述基础包围盒进行剖分得到的子包围盒。
在本说明书一个可选的实施例中,根据所述网格单元的数量,将所述网格单元插入所述待定K-DTree的节点中,包括:
若所述网格单元的数量等于1,则根据所述网格单元的数量,将所述网格单元插入所述待定K-DTree的节点中,以建立所述网格单元与所述节点之间的对应关系,并将所述待定K-DTree中的其他子树均置为空;
若所述网格单元的数量等于2,则将所述基准方向所属的维度确定为剖分维,并将一个网格单元插入所述待定K-DTree的节点中,确定另一个网格单元的中心点在所述剖分维的取值是否大于所述一个网格单元在所述剖分维的取值;若是,则将所述另一个网格单元插入所述节点右侧子树的节点中;若否,则将所述另一个网格单元插入所述节点左侧子树的节点中,并将所述待定K-DTree中未对应有网格单元的其他子树均置为空;
若所述网格单元的数量大于2,则将所述待定K-DTree中的节点,作为待分配节点;将所述网格单元的中心点在所述坐标轴中方差最大的坐标轴的维度,确定为剖分维;将所述网格单元的中心点的坐标在所述剖分维上按照取值的大小进行排序,将处于排序的中间位置的网格单元,作为目标单元插入所述待分配节点中;
将所述待分配节点中,位于所述目标单元左侧的节点更新为待分配节点,并将中心点在所述剖分维的方向上取值小于所述目标单元的网格单元中,处于排序的中间位置的网格单元更新为目标单元,将所述目标单元插入所述待分配节点中,直至所有取值小于所述目标单元的网格单元均插入所述待分配节点;并且,将所述待分配节点中,位于所述目标单元右侧的节点更新为待分配节点,并将中心点在所述剖分维的方向上取值大于所述目标单元的网格单元中,处于排序的中间位置的网格单元更新为目标单元,将所述目标单元插入所述待分配节点中,直至所有取值大于所述目标单元的网格单元均插入所述待分配节点。
在本说明书一个可选的实施例中,所述方法还包括:
每次将网格单元插入待定K-DTree时,更新所述待定K-DTree的深度。
在本说明书一个可选的实施例中,所述方法还包括:
经剖分,得到的节点K对应的包围盒为(Ki min, Ki max),位于节点K左侧的子节点KL对应的子包围盒(KLi min, KLi max)表示为:
Figure 584387DEST_PATH_IMAGE001
位于节点K左侧的子节点KR对应的子包围盒(KRi min, KRi max)表示为:
Figure 577751DEST_PATH_IMAGE002
在本说明书一个可选的实施例中,对包围盒的顶点进行存储,包括:
确定包围盒在基准方向上的顶点,其中,所述基准方向是基准坐标系的任一坐标轴i指示的方向之一,基准坐标系是所述基础包围盒所处空间的坐标系;
对包围盒的顶点进行存储。
在本说明书一个可选的实施例中,对包围盒的顶点进行存储,包括:
按照所述顶点在基准坐标系中逆时针排列的顺序,对顶点进行存储。
在本说明书一个可选的实施例中,所述方便包括以下至少一项:
所述基准坐标系是笛卡尔坐标系;
所述网格单元的形状是三角形;
所述目标体是流体力学仿真模型。
第二方面,本说明书提供一种基于嵌套包围盒概念用于物面网格的数据结构构建装置,用于实现第一方面中的方法。
第三方面,本说明书提供一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行第一方面中的方法。
第四方面,本说明书提供一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行第一方面中的方法。
附图说明
为了更清楚地说明本申请实施例或现有的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例中一种基于嵌套包围盒概念用于物面网格的数据结构构建方法的流程图;
图2为本申请一实施例中构建的基础包围盒和目标体的示意图;
图3a为本申请一实施例中剖分面相交的示意图;
图3b为本申请一实施例中得到的对应于目标K-DTree的各个包围盒的集合示意图;
图4为本申请实施例中一种基于嵌套包围盒概念用于物面网格的数据结构构建装置的结构示意图;
图5为本申请一实施例中一个实施例电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合具体实施例及相应的附图对本申请的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其它元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。
本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。
示例性地,在进行流体力学仿真计算时,需要首先通过建模等方式,生成物面网格,然后根据物面网格信息生成计算所需的空间网格。调用物面网格信息的效率直接影响空间网格的生成效率,因此采用合理的物面网格信息存储方式是提高空间网格生成效率的关键因素之一。
最常见的存储方式是将物面网格顺序存入数组,采用遍历法暴力搜索得到目标网格信息。此种方法的计算花费与物面网格量成正比,当物面网格规模较小时,计算花费尚在承受范围之内。随着研究对象外形复杂程度的提高,物面几何离散单元(三角形/四边形)的数量可达到O(105)~O(106)量级,若此时仍采用遍历法获得目标的网格单元的信息,则计算量达到O(105)~O(106)量级。此种规模的计算量对整个仿真计算周期的影响是巨大的。
实际计算中,大量的无关网格单元可以根据一定的规律被快速排除,从而缩小目标网格单元所在的范围。快速排除无关网格单元的方法可以是:采用叉树数据结构存储物面网格单元信息。目前最常用的叉树数据结构是ADT(Alternating Digital Tree)。此种数据结构首先确定物面所有网格节点所在的最小区域,并把此区域对应为叉树的根节点,然后交替在XYZ三个方向平分此区域,平分得到的两个子域对应叉树的两个左右节点。直至每个区域只包含一个网格节点,此时建成对应物面网格单元对应的ADT。在排除无关网格单元时,可根据二叉树特点快速排除无关的子树,效率极大提高。但对复杂外形来说或者物面网格单元分布不均匀时,区域每次剖分得到的两个子域内包含的网格点数量不同,也即建成的ADT不平衡,ADT平衡性的下降导致计算效率差强人意。
有鉴于此,本说明书提供一种基于嵌套包围盒概念用于物面网格的数据结构构建方法,以解决相关技术中存在的问题。下面结合附图,详细说明本申请的各种非限制性实施方式。本说明书中的一种基于嵌套包围盒概念用于物面网格的数据结构构建方法,包括以下步骤:
S100:创建待定K-DTree。
K-DTree是一种能在 O(N) 时间内把平面剖分成若干个区域,然后在均摊 O(logN) 的时间内找到某个区域内所有点的数据结构。也就是说,K-DTree是一种剖分K维数据空间的数据结构,可以用于多维空间关键数据的搜索(例如,范围搜索和近邻搜索),是二叉空间剖分树的一个特例。
本说明书中的待定K-DTree是节点尚未与网格单元之间建立对应关系的K-DTree。在本说明书一个可选的实施例中,待定K-DTree包含的节点的数量不少于网格单元的数量。
S102:确定物面网格的目标数据集G中未在待定K-DTree中对应有节点的网格单元的数量。
本说明书中的目标体可以通过仿真软件构建的。示例性地,如图2所示,其中的球体即为目标体。目标体可以通过有限元的方法被剖分出若个网格单元。在本说明书中,网格单元的形状可以根据实际的需求确定,示例性地,网格单元可以是三角形、四边形等,下文中,将示例性地以网格单元是三角形为例进行说明。网格单元的数量可以视实际情况而定。可能存在至少两个网格单元的形状和/或尺寸不同的情况。下文中,在涉及公式表示时,以N指代网格单元的数量。
其中,目标数据集G是基于目标体的数据构建的。
S104:构建基础包围盒(Gi min, Gi max),其中,所述基础包围盒是将所述目标体包含其中的、体积最小包围盒。
示例性地,如图2所示,本说明书中的基础包围盒建立在三维空间中,在目标体是球体时,基础包围盒是矩形。基础包围盒是能够将目标体包含其中的、体积最小的包围盒,则基础包围盒的至少一个面与目标体的至少一个面相切。
基础包围盒(Gi min, Gi max)中Gi min是坐标轴i所指示的方向。在采用笛卡尔空间的情况下,i可以是x方向、y方向、z方向之一。
此时,尚未对网格单元和K-DTree节点之间建立对应关系,基础包围盒对应于K-DTree的根节点。
S106:根据所述网格单元的数量,将所述网格单元插入所述待定K-DTree的节点中,以建立所述网格单元与所述节点之间的对应关系,得到目标K-DTree。
将所述网格单元插入所述待定K-DTree的节点的过程,即为在网格单元与K-DTree的节点之间建立对应关系的过程。得到的目标K-DTree中用于存储数据的节点与网格单元一一对应。可以在将所有网格单元插入待定K-DTree的节点中之后,对未对应有网格单元的节点置零。
S108:根据网格单元与节点之间的对应关系,对所述基础包围盒进行剖分。
本步骤可以在步骤S106执行之后执行,也可以与步骤S106同时执行。对基础包围盒的剖分结果示例性地如图2所示。在基础包围盒的基础上剖分得到的子包围盒可以继续进行剖分,进而得到多个包围盒中父包围盒中嵌套有子包围盒的剖分结果。该剖分的过程,可以是基于递归算法的过程。
S110:对包围盒的顶点进行存储。
在完成对包围盒的顶点的存储之后,可以基于包围盒的之间的嵌套关系,对包围盒对应的网格单元进行查找。
本说明书中的一种基于嵌套包围盒概念用于物面网格的数据结构构建方法,该方法适用于针对目标体数据的数据构建。目标体一方面物面网格可以通过数据集的方式进行表征;另一方面,目标体所包含的信息能够体现出某一物的结构、形状,采用本说明书中的方法,能够在构建数据结构时将目标体体现出的结构、形状信息加以利用,以辅助数据结构的构建。进一步地,本说明书中的技术方案在构建数据结构时采用了K-DTree和嵌套包围盒的概念,使得在判断网格单元与包围盒是否相交时快速排除无关网格单元,从而大幅提高判断效率,有利于提高数据查找的速度。
通过本说明书中的技术方案,存储物面网格时,按逆时针顺序存储物面网格所有顶点信息,还同时包含K-DTree节点对应所有物面网格的最小包围盒,K-DTree节点从上到下形成嵌套包围盒形式。嵌套包围盒的引入保证K-DTree每个节点包含当前节点对应三角形的所有信息,保证数据结构精确刻画物面几何信息。
相较于循环盒子法的采用二分法不断将物面网格单元剖分为若干盒子,当剖分到第十层或盒子内物面网格单元数量为50个时停止剖分,然后根据盒子的特征信息(例如最小距离)排除不包含目标单元的盒子。虽然这种方法可以提高搜索效率,同时适用性也较好,但是物面网格单元大幅增多时,盒子数量或盒子内网格单元数量大大增加,此时计算效率尚不能达到预期。本说明书中的方法引入嵌套包围盒,使得在判断物面三角形与目标笛卡尔网格是否相交过程中,与传统数据结构只能近似排除无关物面网格单元相比,本发明的基于嵌套包围盒概念的K-DTree数据结构可以精确排除无关物面网格单元,达到快速缩小搜寻范围,提高网格生成效率的目的。在流场计算时,壁面距离的计算是一项繁重的过程,将基于嵌套包围盒概念的K-DTree与最近邻回溯方法相结合,通过判断创建K-DTree过程中产生的剖分面与包围盒的相对位置,快速检索得到最小距离对应的三角形,从而实现壁面距离的高效计算。
此外,相较于传统K-DTREE存储数据只存物面三角形的顶点,这在某些应用场景(如判断物面三角形与空间笛卡尔网格是否相交)表现出极大的限制,即判断结果的正确性无法保证。可见,本说明书中的方法能够充分发挥K-DTREE数据结构的潜在优势。
在本说明书一个可选的实施例中,根据所述网格单元的数量的三种情况,将所述网格单元插入所述待定K-DTree的节点的过程可以包括以下三项中的某一项:
(一)若所述网格单元的数量等于1,则执行:
根据所述网格单元的数量,将所述网格单元插入所述待定K-DTree的节点中,以建立所述网格单元与所述节点之间的对应关系,并将所述待定K-DTree中的其他子树均置为空。
(二)若所述网格单元的数量等于2,则执行:
将所述基准方向所属的维度确定为剖分维(笛卡尔空间为三维),并将一个网格单元插入所述待定K-DTree的节点中。
然后,确定另一个网格单元的中心点在所述剖分维的取值是否大于所述一个网格单元在所述剖分维的取值。若是,则将所述另一个网格单元插入所述节点右侧子树的节点中;若否,则将所述另一个网格单元插入所述节点左侧子树的节点中,并将所述待定K-DTree中未对应有网格单元的其他子树均置为空。
(三)若所述网格单元的数量大于2,则执行:
将所述待定K-DTree中的节点,作为待分配节点。将所述网格单元的中心点在所述坐标轴中方差最大的坐标轴的维度,确定为剖分维。将所述网格单元的中心点的坐标在所述剖分维上按照取值的大小进行排序,将处于排序的中间位置的网格单元,作为目标单元插入所述待分配节点中。
将所述待分配节点中,位于所述目标单元左侧的节点更新为待分配节点,并将中心点在所述剖分维的方向上取值小于所述目标单元的网格单元中,处于排序的中间位置的网格单元更新为目标单元,将所述目标单元插入所述待分配节点中,直至所有取值小于所述目标单元的网格单元均插入所述待分配节点;并且,将所述待分配节点中,位于所述目标单元右侧的节点更新为待分配节点,并将中心点在所述剖分维的方向上取值大于所述目标单元的网格单元中,处于排序的中间位置的网格单元更新为目标单元,将所述目标单元插入所述待分配节点中,直至所有取值大于所述目标单元的网格单元均插入所述待分配节点。
也就会说,在N大于2的情况下,为了保证K-DTREE的平衡,剖分维的确定是计算N个三角形的中心点在各个维度的方差,然后找出方差最大的维度确定为剖分维。然后将此N个网格单元中心点在方差最大的维度上按从小到大(或者从大到小)的顺序进行排序。将位于中间的网格单元插入到当前K-DTREE的节点中去。小于此网格单元的将全部位于当前节点的左子树,大于此网格单元的将全部位于当前节点的右子树。对当前节点左子树和右子树的网格单元递归执行步骤S106,直至所有网格单元全部插入到K-DTREE中。
在本说明书一个可选的实施例中,每次将网格单元插入待定K-DTree时,更新所述待定K-DTree的深度,即将待定K-DTree的深度+1,以更新所述待定K-DTree的深度。
现通过公式的方式对包围盒剖分的结果进行说明。
由前述内容可知,包围盒的剖分是根据在排序得到的序列中位于中间的节点进行剖分的。假设,在一次递归中,位于中间的节点是节点K,为节点K确定出的其对应的包围盒是(Ki min, Ki max),则位于节点K左侧的子节点KL对应的子包围盒(KLi min, KLi max)表示为:
Figure 112507DEST_PATH_IMAGE001
位于节点K左侧的子节点KR对应的子包围盒(KRi min, KRi max)表示为:
Figure 849519DEST_PATH_IMAGE003
通过本说明书中的过程构建得到的数据,在后续步骤可以通过查找的方式被利用起来。为便于查找、提高查找的速度,按照所述顶点在基准坐标系中逆时针排列的顺序,对顶点进行存储。
从上述公式可以看出,节点包围盒表示此空间区域内所有三角形网格单元集合的最小包围盒,而在进行空间区域剖分时的依据是三角形中心点确定的平面,所以节点包围盒与包围盒之间,剖分面与剖分面之间会存在相交的情况。图3a和图3b表示对圆球进行区域剖分时的剖分面分布情况,其中图3a表示前三个剖分面,图3b表示所有剖分面。剖分面的相交必然导致包围盒的相交,包围盒的相交为精确缩小检索范围提供了条件。需要说明的是,这种相交只会出现在三维及三维以上的情况。其中,splitaxis是CityEngine CGA语法之切割函数 split。
基于同样的思路,本说明书实施例还提供了对应于图1所示部分过程的一种基于嵌套包围盒概念用于物面网格的数据结构构建装置。
如图4所示,所述一种基于嵌套包围盒概念用于物面网格的数据结构构建装置,可以包括以下模块中的一个或多个:
待定K-DTree创建模块,配置为:创建待定K-DTree。
网格单元数量确定模块,配置为:确定物面网格的目标数据集G中未在待定K-DTree中对应有节点的网格单元的数量,其中,目标数据集G是基于目标体的数据构建的,所述目标体的物面由网格单元构成。
基础包围盒创建模块,配置为:构建基础包围盒(Gi min, Gi max),其中,所述基础包围盒是将所述目标体包含其中的、体积最小包围盒。
目标K-DTree创建模块,配置为:根据所述网格单元的数量,将所述网格单元插入所述待定K-DTree的节点中,以建立所述网格单元与所述节点之间的对应关系,得到目标K-DTree;并且,根据网格单元与节点之间的对应关系,对所述基础包围盒进行剖分。
存储模块,配置为:对包围盒的顶点进行存储,其中,所述包围盒包括所述基础包围盒和针对所述基础包围盒进行剖分得到的子包围盒。
在本说明书一个可选的实施例中,目标K-DTree创建模块,具体配置为:若所述网格单元的数量等于1,则根据所述网格单元的数量,将所述网格单元插入所述待定K-DTree的节点中,以建立所述网格单元与所述节点之间的对应关系,并将所述待定K-DTree中的其他子树均置为空;
若所述网格单元的数量等于2,则将所述基准方向所属的维度确定为剖分维,并将一个网格单元插入所述待定K-DTree的节点中,确定另一个网格单元的中心点在所述剖分维的取值是否大于所述一个网格单元在所述剖分维的取值;若是,则将所述另一个网格单元插入所述节点右侧子树的节点中;若否,则将所述另一个网格单元插入所述节点左侧子树的节点中,并将所述待定K-DTree中未对应有网格单元的其他子树均置为空;
若所述网格单元的数量大于2,则将所述待定K-DTree中的节点,作为待分配节点;将所述网格单元的中心点在所述坐标轴中方差最大的坐标轴的维度,确定为剖分维;将所述网格单元的中心点的坐标在所述剖分维上按照取值的大小进行排序,将处于排序的中间位置的网格单元,作为目标单元插入所述待分配节点中;
将所述待分配节点中,位于所述目标单元左侧的节点更新为待分配节点,并将中心点在所述剖分维的方向上取值小于所述目标单元的网格单元中,处于排序的中间位置的网格单元更新为目标单元,将所述目标单元插入所述待分配节点中,直至所有取值小于所述目标单元的网格单元均插入所述待分配节点;并且,将所述待分配节点中,位于所述目标单元右侧的节点更新为待分配节点,并将中心点在所述剖分维的方向上取值大于所述目标单元的网格单元中,处于排序的中间位置的网格单元更新为目标单元,将所述目标单元插入所述待分配节点中,直至所有取值大于所述目标单元的网格单元均插入所述待分配节点。
在本说明书一个可选的实施例中,目标K-DTree创建模块,具体配置为:每次将网格单元插入待定K-DTree时,更新所述待定K-DTree的深度。
在本说明书一个可选的实施例中,存储模块存储数据的公式为:经剖分,得到的节点K对应的包围盒为(Ki min, Ki max),位于节点K左侧的子节点KL对应的子包围盒(KLi min,KLi max)表示为:
Figure 904062DEST_PATH_IMAGE004
位于节点K左侧的子节点KR对应的子包围盒(KRi min, KRi max) 表示为:
Figure 333907DEST_PATH_IMAGE003
。/>
在本说明书一个可选的实施例中,存储模块具体配置为:确定包围盒在基准方向上的顶点,其中,所述基准方向是基准坐标系的任一坐标轴i指示的方向之一,基准坐标系是所述基础包围盒所处空间的坐标系;对包围盒的顶点进行存储。
在本说明书一个可选的实施例中,存储模块具体配置为:按照所述顶点在基准坐标系中逆时针排列的顺序,对顶点进行存储。
在本说明书一个可选的实施例中,所述基准坐标系是笛卡尔坐标系。
在本说明书一个可选的实施例中,所述网格单元的形状是三角形。
在本说明书一个可选的实施例中,所述目标体是流体力学仿真模型。
图5是本申请的一个实施例电子设备的结构示意图。请参考图5,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成一种基于嵌套包围盒概念用于物面网格的数据结构构建方法。处理器,执行存储器所存放的程序,并具体用于执行前述任意一种基于嵌套包围盒概念用于物面网格的数据结构构建方法。
上述如本申请图1所示实施例揭示的一种基于嵌套包围盒概念用于物面网格的数据结构构建方法可以应用于处理器(即,本说明书中的删除控制模块)中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图1中一种基于嵌套包围盒概念用于物面网格的数据结构构建方法,并实现图1所示实施例的功能,本申请实施例在此不再赘述。
本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行图1所示实施例中一种基于嵌套包围盒概念用于物面网格的数据结构构建方法执行的方法,并具体用于执行前述的任意一种基于嵌套包围盒概念用于物面网格的数据结构构建方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可删除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (9)

1.一种基于嵌套包围盒概念用于物面网格的数据结构构建方法,其特征在于,所述方法包括:
创建待定K-DTree;
确定物面网格的目标数据集G中未在待定K-DTree中对应有节点的网格单元的数量,其中,目标数据集G是基于目标体的数据构建的,所述目标体的物面由网格单元构成;
构建基础包围盒(Gi min, Gi max),其中,所述基础包围盒是将所述目标体包含其中的体积最小包围盒;其中,i是坐标轴i所指示的方向;(Gi min, Gi max)是CityEngine CGA语法之切割函数 split对基础包围盒的符号表示;
根据所述网格单元的数量,将所述网格单元插入所述待定K-DTree的节点中,以建立所述网格单元与所述节点之间的对应关系,得到目标K-DTree;并且,根据网格单元与节点之间的对应关系,对所述基础包围盒进行剖分;
对包围盒的顶点进行存储,其中,所述包围盒包括所述基础包围盒和针对所述基础包围盒进行剖分得到的子包围盒;
此外,根据所述网格单元的数量,将所述网格单元插入所述待定K-DTree的节点中,包括:
若所述网格单元的数量等于1,则根据所述网格单元的数量,将所述网格单元插入所述待定K-DTree的节点中,以建立所述网格单元与所述节点之间的对应关系,并将所述待定K-DTree中的其他子树均置为空;
若所述网格单元的数量等于2,则将基准方向所属的维度确定为剖分维,并将一个网格单元插入所述待定K-DTree的节点中,确定另一个网格单元的中心点在所述剖分维的取值是否大于所述一个网格单元在所述剖分维的取值;若是,则将所述另一个网格单元插入所述节点右侧子树的节点中;若否,则将所述另一个网格单元插入所述节点左侧子树的节点中,并将所述待定K-DTree中未对应有网格单元的其他子树均置为空;
若所述网格单元的数量大于2,则将所述待定K-DTree中的节点,作为待分配节点;将所述网格单元的中心点在坐标轴中方差最大的坐标轴的维度,确定为剖分维;将所述网格单元的中心点的坐标在所述剖分维上按照取值的大小进行排序,将处于排序的中间位置的网格单元,作为目标单元插入所述待分配节点中;
将所述待分配节点中,位于所述目标单元左侧的节点更新为待分配节点,并将中心点在所述剖分维的方向上取值小于所述目标单元的网格单元中,处于排序的中间位置的网格单元更新为目标单元,将所述目标单元插入所述待分配节点中,直至所有取值小于所述目标单元的网格单元均插入所述待分配节点;并且,将所述待分配节点中,位于所述目标单元右侧的节点更新为待分配节点,并将中心点在所述剖分维的方向上取值大于所述目标单元的网格单元中,处于排序的中间位置的网格单元更新为目标单元,将所述目标单元插入所述待分配节点中,直至所有取值大于所述目标单元的网格单元均插入所述待分配节点。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
每次将网格单元插入待定K-DTree时,更新所述待定K-DTree的深度。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
经剖分,得到的节点K对应的包围盒为(Ki min, Ki max) ,位于节点K左侧的子节点KL对应的子包围盒(KLi min, KLi max)表示为:
Figure DEST_PATH_IMAGE001
位于节点K左侧的子节点KR对应的子包围盒(KRi min, KRi max)表示为:
Figure 622036DEST_PATH_IMAGE002
其中,(Ki min, Ki max)是CityEngine CGA语法之切割函数 split对节点K对应的包围盒的符号表示;L表示左侧;splitAxis是CityEngine CGA语法之切割函数 split。
4.如权利要求3所述的方法,其特征在于,对包围盒的顶点进行存储,包括:
确定包围盒在基准方向上的顶点,其中,所述基准方向是基准坐标系的任一坐标轴i指示的方向之一,基准坐标系是所述基础包围盒所处空间的坐标系;
对包围盒的顶点进行存储。
5.如权利要求4所述的方法,其特征在于,对包围盒的顶点进行存储,包括:
按照所述顶点在基准坐标系中逆时针排列的顺序,对顶点进行存储。
6.如权利要求4所述的方法,其特征在于,所述方法包括以下至少一项:
所述基准坐标系是笛卡尔坐标系;
所述网格单元的形状是三角形;
所述目标体是流体力学仿真模型。
7.一种基于嵌套包围盒概念用于物面网格的数据结构构建装置,其特征在于,所述装置用于实现权利要求1~6之任一所述方法。
8.一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行所述权利要求1~6之任一所述方法。
9.一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行所述权利要求1~6之任一所述方法。
CN202211276405.9A 2022-10-19 2022-10-19 基于嵌套包围盒概念用于物面网格的数据结构构建方法 Active CN115346005B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211276405.9A CN115346005B (zh) 2022-10-19 2022-10-19 基于嵌套包围盒概念用于物面网格的数据结构构建方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211276405.9A CN115346005B (zh) 2022-10-19 2022-10-19 基于嵌套包围盒概念用于物面网格的数据结构构建方法

Publications (2)

Publication Number Publication Date
CN115346005A CN115346005A (zh) 2022-11-15
CN115346005B true CN115346005B (zh) 2023-03-28

Family

ID=83957200

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211276405.9A Active CN115346005B (zh) 2022-10-19 2022-10-19 基于嵌套包围盒概念用于物面网格的数据结构构建方法

Country Status (1)

Country Link
CN (1) CN115346005B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117390775B (zh) * 2023-12-13 2024-02-27 中国空气动力研究与发展中心计算空气动力研究所 一种粘性笛卡尔网格生成方法、设备、介质及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609992A (zh) * 2012-02-12 2012-07-25 北京航空航天大学 基于三角网格变形体的自碰撞检测方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5945996A (en) * 1996-10-16 1999-08-31 Real-Time Geometry Corporation System and method for rapidly generating an optimal mesh model of a 3D object or surface
CN109543358B (zh) * 2019-01-11 2022-12-06 西安电子科技大学 Gpu上kd树的射线追踪加速系统及kd树输出方法
CN112181991B (zh) * 2020-10-15 2021-06-15 中国人民解放军国防科技大学 基于快速构建kd树的地球模拟系统网格重映射方法
CN112446067B (zh) * 2020-11-03 2022-12-02 中国空气动力研究与发展中心计算空气动力研究所 一种基于弹性变形的区域网格动态重构方法
CN114820979B (zh) * 2022-04-22 2023-03-24 如你所视(北京)科技有限公司 三维网格模型的处理方法、装置和存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609992A (zh) * 2012-02-12 2012-07-25 北京航空航天大学 基于三角网格变形体的自碰撞检测方法

Also Published As

Publication number Publication date
CN115346005A (zh) 2022-11-15

Similar Documents

Publication Publication Date Title
US11587282B2 (en) Hybrid hierarchy of bounding and grid structures for ray tracing
CN115357849B (zh) 笛卡尔网格下的壁面距离的计算方法及装置
US11810240B2 (en) Methods and systems for constructing ray tracing acceleration structures
CN115346005B (zh) 基于嵌套包围盒概念用于物面网格的数据结构构建方法
Su et al. An adaptive and rapid 3D Delaunay triangulation for randomly distributed point cloud data
CN115270500A (zh) 一种布尔求差运算方法、装置及电子设备
Rivara Lepp-bisection algorithms, applications and mathematical properties
Olliff et al. Efficient searching in meshfree methods
CN115330971B (zh) 一种面向渲染性能优化的几何模型轻量化方法
CN114119882B (zh) 飞行器动态流场分析中高效的嵌套网格宿主单元搜索方法
Horvat et al. Ray-casting point-in-polyhedron test
CN115145930A (zh) 基于树状层次索引的gis矢量数据层次编码方法及装置
CN115935673A (zh) 一种基于射线追踪的fdtd网格剖分方法及系统
CN115564925A (zh) 基于B-rep模型和笛卡尔网格切片的网格生成方法
CN115222870A (zh) 非结构网格隐式lusgs均衡着色方法、设备及介质
Khamayseh et al. Use of the spatial kD-tree in computational physics applications
CN110349265B (zh) 一种四面体拓扑网格生成方法及电子设备
Zhang et al. A compact face-based topological data structure for triangle mesh representation
Zhanlong et al. Polygon overlay analysis algorithm based on monotone chain and str tree in the simple feature model
CN110796729B (zh) 一种基于二叉树的网格划分方法
CN116361516B (zh) 一种基于多级矩形分块查询目标点所属单元的搜索方法
US12008703B2 (en) Methods and systems for constructing ray tracing acceleration structures
EP4113450A1 (en) Transformation of data in a ray tracing system
Girgin et al. Performance comparison of spatial search algortihms for specific datasets in smart cities
CN118094668A (zh) 一种自适应笛卡尔网格快速生成优化方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant