CN108875936B - 求解三维空间内任意两个多面体间的最近距离的方法 - Google Patents

求解三维空间内任意两个多面体间的最近距离的方法 Download PDF

Info

Publication number
CN108875936B
CN108875936B CN201810597365.5A CN201810597365A CN108875936B CN 108875936 B CN108875936 B CN 108875936B CN 201810597365 A CN201810597365 A CN 201810597365A CN 108875936 B CN108875936 B CN 108875936B
Authority
CN
China
Prior art keywords
vertex
polyhedron
population
polyhedrons
solving
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
CN201810597365.5A
Other languages
English (en)
Other versions
CN108875936A (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.)
University of Shanghai for Science and Technology
Original Assignee
University of Shanghai for Science and Technology
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 University of Shanghai for Science and Technology filed Critical University of Shanghai for Science and Technology
Priority to CN201810597365.5A priority Critical patent/CN108875936B/zh
Publication of CN108875936A publication Critical patent/CN108875936A/zh
Application granted granted Critical
Publication of CN108875936B publication Critical patent/CN108875936B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • G06N3/126Evolutionary algorithms, e.g. genetic algorithms or genetic programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/20Administration of product repair or maintenance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Human Resources & Organizations (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Genetics & Genomics (AREA)
  • Economics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Physiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供了一种求解三维空间内任意两个多面体间的最近距离的方法,具有这样的特征,包括以下步骤:步骤S1,分别将多面体Mx和多面体My的三维模型表面三角网格化并进行预处理得到处理信息;步骤S2,对处理信息采用背面剔除算法进行处理得到顶点选取区域,该顶点选取区域包括多个由多面体Mx和多面体My的顶点构成的测试顶点对;步骤S3,采用基因表达式编程和Alopex算法相结合的方法对顶点选取区域内的测试顶点对内的两个顶点之间的最近距离求解得到最近顶点对,该最近顶点对的间距为多面体Mx和多面体My之间的最近距离的近似解;步骤S4,通过最近顶点对对多面体Mx和多面体My之间的最近距离精确求解得到最小间距。本方法求解精度高、收敛性能好。

Description

求解三维空间内任意两个多面体间的最近距离的方法
技术领域
本发明涉及一种求解多面体间的最近距离的方法,具体涉及一种求解三维空间内任意两个多面体间的最近距离的方法。
背景技术
求解两物体之间的最近距离可广泛应用于机器人、物理系统仿真、虚拟体验、CAD/CAM、计算机动画等领域。该距离信息在机器人路径规划中,用于判定障碍物的远近便于机器人进行有效的障碍规避;在物理系统仿真、虚拟体验中用于计算接触作用力的大小和惩罚函数评估;在计算机动画中,用于精确的碰撞检测和物理仿真;在CAD/CAM和数控加工仿真中,用于干涉处理。具体到设备虚拟维修仿真过程更需要此项技术的支持,以此确切知道两零部件物体间的最近间距,从而有助于维修人员模拟完成设备零部件的精确安装。
求解两物体之间的最近距离算法可分为两大类:凸多面体间的最近距离和凹多面体之间的最近距离。
Maruyama提出的两凸多面体间的干涉检测算法是今天众多距离测定算法的先驱,其方法是全面检测分析两物体每对面是否发生相交,若存在则两物体产生干涉。该方法仅能返回布尔值确定两凸体在某一给定点产生相交,而不能提供任何有关间距的详细信息。
当凸多面体用顶点的凸包表示时,凸多面体间的距离计算可归结为带约束条件的非线性规划问题,而此类问题可采用最优化方法进行求解。Nilanjan chakraborty提出内点法去计算两凸多面体隐式曲面之间的距离,但计算精度无法保证,S.Zegh Loul进而采用梯度投影法,但这些方法均有其适应范围和一定的局限性,当物体表面为二次或超级曲面时还需预先进行线性化处理。
凹多面体间的距离测定大多数采用离线将凹多面体划分成子凸多面体,然后求解每对子凸多面体的间距从中选取最小值作为求解结果。上述方法依赖于快速、鲁棒性较强的凸多面体间距求解方法但对于较为复杂的凹多面体时,计算花费巨大。
不对两凹多面体进行划分也可直接求解两者之间的最近距离。这类方法相对于划分类求解法不会添加额外的面、边、点等特征但可最小化物体对的数目,极大减少了运算量。例如Federico Thomas通过检测两凹多面体面、边之间是否相交来确定两者之间是否有干涉产生。P.Jimenez在此基础上使用spherical face orientation graph和基于平面扫描算法进行特征配对,极大减少了边、面对的数目从而加快相交测试。但是,上述算法只返回布尔值来表明凹多面体间是否发生干涉,无法量化最小间距。
JuanA.Carretero发现在两凹多面体表面选取一定数目的点代替其物体几何,则可将带约束条件的两物体之间的距离问题转化为无约束条件点对之间的最近距离问题。此时可采用遗传算法(遗传爬山算法)进行求解但此类算法只能用于凹多面体间的最近距离求解,适用范围较小。
综上,目前大多数的研究只是分别独立解决凸多面体之间、凹多面体之间的最近距离计算。但现实世界中各种物体是复杂多变的往往是凹凸多面体的混合体,电力设备的零部件更是如此,它们并不是规则凸多面体或凹多面体而多为一般凹凸多面体。
发明内容
本发明是为了解决上述问题而进行的,尤其是为了解决凸面体和凹面体之间的最近距离的求解问题进而实现虚拟维修过程中对零部件进行精确安装,目的在于提供一种求解三维空间内任意两个多面体间的最近距离的方法。
本发明提供了一种求解三维空间内任意两个多面体间的最近距离的方法,具有这样的特征,包括以下步骤:步骤S1,分别将多面体Mx和多面体My的三维模型表面三角网格化并进行预处理得到处理信息;步骤S2,对处理信息采用背面剔除算法进行处理得到顶点选取区域,该顶点选取区域包括多个由多面体Mx和多面体My的顶点构成的测试顶点对;步骤S3,对顶点选取区域内的测试顶点对内的两个顶点之间的最近距离求解得到最近顶点对,该最近顶点对的间距为多面体Mx和多面体My之间的最近距离的近似解;步骤S4,通过最近顶点对对多面体Mx和多面体My之间的最近距离精确求解得到最小间距,其中,步骤S3包括以下子步骤,步骤S3-1,令循环次数环次数k=0,步骤S3-2,设定最大评价次数kmax和适应度函数值的最大差值Δεmax,步骤S3-3,从顶点选取区域中随机选取测试顶点对作为染色体来构成初始种群p0,步骤S3-4,根据计算规则计算种初始种群p0中每个染色体的适应度函数值ε,步骤S3-5,将适应度函数值ε最小的染色体保留并复制到下一代种群中作为复制种群,步骤S3-6,按照轮盘赌策略从初始种群p0的所有染色体中选择父代个体,步骤S3-7,对父代个体结合Alopex算法进行遗传操作得到变异种群、交换种群以及交叉种群,步骤S3-8,复制种群、异种群、交换种群以及交叉种群构成新一代种群p1,步骤S3-9,根据计算规则计算种新一代种群p1中每个染色体的适应度函数值ε1,步骤S3-10,判断是否满足算法终止条件,该终止条件为k>kmax或适应度函数值的差值Δε1≥Δεmax,步骤S3-11,如果满足算法终止条件,输出最优染色体,即最近顶点对,然后结束程序,步骤S3-12,如果不满足算法终止条件,k数值增长1并对新一代种群循环进行步骤S3-5~步骤S3-13。
在本发明提供的求解三维空间内任意两个多面体间的最近距离的方法中,还可以具有这样的特征:其中,最近顶点对包括多面体Mx上的顶点A和多面体My上的顶点A',步骤S4包括以下子步骤,步骤S4-1,将顶点A和顶点A'之间的方向矢量
Figure BDA0001692143650000031
作为第一相对标准方向矢量,步骤S4-2,分别计算以顶点A作为顶点的三角网格面片的法向量与第一相对标准方向矢量之间的夹角的余弦值并将余弦值最大的三角网格面片作为第一目标面片,步骤S4-3,将顶点A'和顶点A之间的方向矢量
Figure BDA0001692143650000041
作为第二相对标准方向矢量,步骤S4-4,分别计算以顶点A'作为顶点的三角网格面片的法向量与第二相对标准方向矢量之间的夹角的余弦值并将余弦值最大的三角网格面片作为第二目标面片,步骤S4-5,从第一目标面片和第二目标面片上各随机选取多个顶点通过GEP算法进行计算得到最小间距。
在本发明提供的求解三维空间内任意两个多面体间的最近距离的方法中,还可以具有这样的特征:其中,法向量为与三角网格面片垂直的单位法向量,且该单位法向量的方向为将三角网格面片的三个顶点以顺时针方向排序在左手法则下朝外。
在本发明提供的求解三维空间内任意两个多面体间的最近距离的方法中,还可以具有这样的特征:其中,多面体Mx为凹面体或凸面体,多面体My为凹面体或凸面体。
在本发明提供的求解三维空间内任意两个多面体间的最近距离的方法中,还可以具有这样的特征:其中,步骤S1中,处理信息包括点结构体数组、面矩阵、连接矩阵以及网格顶点间最短路径。
在本发明提供的求解三维空间内任意两个多面体间的最近距离的方法中,还可以具有这样的特征:其中,步骤S3-7中,由父代个体得到变异种群的过程为,将父代个体作为t-2时刻的变量值,从父代个体中选取适应度函数值ε最大的染色体并对其头部的每一位进行随机测试,当满足变异概率时,对编码进行重置从而产生中间一代染色体,该中间一代染色体作为t-1时刻的变量值,对中间一代染色体进行Alopex算法的基本操作,得到新个体,该新个体为t时刻的变量值,新个体作为变异种群。
在本发明提供的求解三维空间内任意两个多面体间的最近距离的方法中,还可以具有这样的特征:其中,由父代个体得交换种群的过程为,将父代个体作为t-2时刻的变量值,从父代个体中以IS插串或RIS插串的变换概率随机选取染色体并按照参数设置进行相应的移位变换操作产生新个体,生中间一代染色体,该中间一代染色体作为t-1时刻的变量值,对中间一代染色体进行Alopex算法的基本操作,得到新个体,该新个体为t时刻的变量值,新个体作为交换种群。
在本发明提供的求解三维空间内任意两个多面体间的最近距离的方法中,还可以具有这样的特征:其中,由父代个体得交叉种群的过程为,将父代个体作为t-2时刻的变量值,从父代个体中分别以单点、两点重组概率随机选取两个染色体,按照参数设置进行交叉操作产生两个生中间一代染色体,这两个中间一代染色体作为t-1时刻的变量值,对中间一代染色体进行Alopex算法的基本操作,得到新个体,该新个体为t时刻的变量值,新个体作为交叉种群。
发明的作用与效果
根据本发明所涉及的求解三维空间内任意两个多面体间的最近距离的方法,因为将多面体Mx和多面体My的三维模型表面三角网格化并进行预处理得到处理信息,然后对处理信息采用背面剔除算法进行处理得到顶点选取区域,再对顶点选取区域内的测试顶点对通过基因表达式编程的方法求解得到最近顶点对,并且在基因表达式编程的方法的遗传操作过程中使用了Alopex算法,最后对多面体Mx和多面体My之间的最近距离精确求解得到最小间距,所以通过本方法能够实现对三维空间内任意两个多面体尤其是凸面体和凹面体之间的最近距离进行求解,并且求得的最小间距的精度非常高,有助于维修人员模拟完成设备零部件的精确安装。此外,将多面体和多面体的三维模型表面三角网格化并进行预处理,便于快速提取相关信息加快后续最近距离的求解速度;对处理信息采用背面剔除算法进行处理,降低顶点选取的盲目性进而加速后续算法的收敛,这些过程使得整个方法的计算时间大大缩短。
附图说明
图1是本发明的实施例中求解三维空间内任意两个多面体间的最近距离的方法的过程示意图;
图2是本发明的实施例中从顶点ns到顶点nt的最短路径示意图;
图3是本发明的实施例中运动中的两个多面体的顶点选取区域确定过程试图;
图4是两个多面体之间出现最近距离的部位的情况示意图;
图5是车式闸刀与电力开关柜的图片;
图6是车式闸刀与电力开关柜的中间柜门的最近距离的不同求解方法的示意图;以及
图7是分别采用遗传-爬山、GEP、GEP-Alopex与Alopex算法对车式闸刀与电力开关柜的最近距离求解所得的结果示意图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,以下实施例结合附图对本发明求解三维空间内任意两个多面体间的最近距离的方法作具体阐述。
图1是本发明的实施例中求解三维空间内任意两个多面体间的最近距离的方法的过程示意图。
如图1所示,本实施例中的求解三维空间内任意两个多面体间的最近距离的方法包括以下步骤:
步骤S1,分别将多面体Mx和多面体My的三维模型表面三角网格化并进行预处理得到处理信息。
多面体Mx为凹面体或凸面体,在本实施例中,多面体Mx为凹面体。多面体My为凹面体或凸面体,在本实施例中,多面体Mx为凸面体。
因三角形网格表征简单易绘制,在现实三维计算机图形学中三维物体表面通常采用三角网格来表示。3ds、obj、stl、ply等常见三维模型文件存储格式均是以三角网格为基础。其它多边形表示形式也可通过Altair、Gid等商用或免费软件Open mesh转化为三角网格对三维模型进行表征,从而将复杂三维模型的表面用有限数目点进行离散化表示。
为了便于后续计算过程能够快速提取相关信息,多面体Mx和多面体My的三维模型表面进行三角网格化后还需要进行与处理过程才能得到处理信息。
处理信息包括:点结构体数组、面矩阵、连接矩阵C以及网格顶点间最短路径。
点结构体数组的获取过程为:将三维模型上的三角网格顶点(总数为N)信息用结构体数组V[N]进行存储即可得到点结构体数组。多面体Mx和多面体My的三维模型在各自的局部坐标系下,表面上的所有三角网格顶点依据其坐标(x,y,z)按照如下规则进行排序编号并作为该顶点信息在结构体数组中的标号:先根据z由大到小排序,z相等时,再按y由大到小排序,而y相等时,则按x由大到小排序。点结构体数组的每一个元素中的一维数组分别记录该三角网格顶点(简称顶点)在对应的多面体的局部坐标系下的x,y,z的坐标位置;其整数类型指针指向包含该顶点的各三角面片在面矩阵中的行号。
面矩阵用于统计三维模型表面的三角网格面片(简称三角面片)的个数并按照三角网格面片所包含的顶点在点结构体数组中的最小编号优先顺序对各三角面片进行编号。编号数作为各三角面片在面矩阵中的行号,其中每一行的前三列存储三角面片所包含的三个顶点(三个顶点间以顺时针方向进行排序以保证在左手法则下该面片法相量方向朝外)在点结构体数组中的行号,第四列为该面片的法向量值。
连接矩阵C用于记录三维模型上各顶点之间的相邻连接关系。
连接矩阵C为n×n方阵(n是三维模型表面的网格顶点总数)。如果其第i行、第j列的元素值Cij的值为1,则表示顶点ni与nj相连接;否则矩阵元素值Cij值为0。因此该连接矩阵C为一稀疏矩阵,可用三元组线性表按行优先的顺序排列后(跳过0元素)进行压缩存储。又因为该三元组线性表中所记录的每一三元组的元素值相同(均为1),所以该值也可不记,三元组线性表可进一步被简化为二元组顺序表。
网格顶点间最短路径用于记录同一三维模型表面的三角网格上任意两个顶点间的最短路径信息。求解最短路径的方法有Dijskstra、Floyd、SPFA。本实施例采用性能稳定、形式相对简单的Floyd算法来求解最短路径并构建距离矩阵D和前驱矩阵P来记录Floyd算法的求解值。
在本实施例中,以多面体Mx的三维模型为例进行详细说明。多面体Mx的三维模型表面网格由n个顶点,则距离矩阵D和前驱矩阵P的大小均为n×n,如果行号i表示源顶点的编号,列号j表示目的顶点的编号,则D[i,j]存储的是所求得的源顶点和目的顶点在网格表面上的最小距离值di→j,P[i,j]存储的是源顶点经最短路径到达目的顶点之前的最后一个顶点的编号。
图2是本发明的实施例中从顶点ns到顶点nt的最短路径示意图。
如图2所示,如果三维模型的表面网格上有一从顶点ns到顶点nt的最短路径
Figure BDA0001692143650000081
则顶点ns到顶点nt的最小距离ds→t=ds→k-j+1+...dk-1→k+dk→t
步骤S2,对处理信息采用背面剔除算法进行处理得到顶点选取区域,该顶点选取区域包括多个由多面体Mx和多面体My的顶点构成的测试顶点对。
其中,步骤S2中,对处理信息采用背面剔除算法进行处理得到顶点选取区域的过程为:
因为球形包围盒在物体发生旋转时无需进行重新调整和更新,因此我们选取包围球进行顶点选择区域的确定。
分别计算多面体Mx和多面体My的包围球的中心Ox、Oy以及半径Rx、Ry
如果多面体Mx和多面体My相对静止:
针对多面体Mx,将中心Ox和中心Oy连线构成的矢量
Figure BDA0001692143650000091
与多面体Mx的各个三角面片的法向量分别通过向量的数量记公式计算两者的夹角θ的余弦值cosθ,如果cosθ>0,则对应的三角面片上的顶点落入顶点选取区域,否则剔除相应的顶点。其中,法向量为与三角面片垂直的单位法向量,且该单位法向量的方向为将三角面片的三个顶点以顺时针方向排序在左手法则下朝外。
针对多面体My,计算中心Oy和中心Ox连线构成的矢量
Figure BDA0001692143650000092
与多面体My的各个三角面片的法向量之间的夹角余弦值,将该夹角余弦值大于0所对应的三角面片上的顶点落入顶点选取区域,否则剔除相应的顶点。
如果多面体Mx和多面体My出现相对运动:
图3是本发明的实施例中运动中的两个多面体的顶点选取区域确定过程试图。
如图3所示,O表示全局(世界)坐标系原点,中心Ox和中心Oy分别表示多面体Mx和多面体My的局部(物体)坐标系原点,Wx、Wy分别表示多面体Mx和多面体My旋转的角速度,Vx、Vy分别表示多面体Mx和多面体My在对应的局部坐标系原点的运动速度,
中心Ox和中心Oy连线构成的矢量
Figure BDA0001692143650000093
分别与多面体Mx和多面体My的包围球相交于点Ax、点Ay,通过下列公式计算点Ax相对于点Ay的相对运动速度
Figure BDA0001692143650000094
Figure BDA0001692143650000101
分别计算多面体Mx的各个三角面片的法向量与相对运动速度
Figure BDA0001692143650000102
的单位向量以及多面体My的各个三角面片的法向量与相对运动速度
Figure BDA0001692143650000103
的单位向量的夹角的余弦值,该余弦值大于0所对应的三角面片上的顶点落入顶点选取区域。
步骤S3,采用基因表达式编程(GEP)算法和Alopex算法相结合的方法对顶点选取区域内的测试顶点对内的两个顶点之间的最近距离求解得到最近顶点对,该最近顶点对的间距为多面体Mx和多面体My之间的最近距离的近似解。
其中,步骤S3包括以下子步骤,
步骤S3-1:
令循环次数环次数k=0。
步骤S3-2:
设定控制参数,包括:目标函数、函数集、终结符号集、基因头部长度、基因尾部长度、最大评价次数kmax、适应度函数值的最大差值Δεmax、变异率、IS位移率、RIS位移率、单点重组概率以及两点重组概率。
在本实施例中,求解的目的是找到满足目标函数d的一对顶点的空间位置。在本实施例中,函数集F开始时不含任何元素即为空值,终结符号集E={0,1},基因由头部和尾部组成,设基因头部长度为h(因它们可由各自三维模型的点结构体数组中的一维数组来存储,为此我们可对它们所处点结构体数组中的索引编号进行组合同时进行二进制编码即可),尾部长度为e,其中的符号均来自终结符号E。这里基因含有的最大操作目数n=2,则e=h×(n-1)+1。
测试顶点对i的染色体记作
Figure BDA0001692143650000104
Figure BDA0001692143650000105
是根据相对位置或相对速度在多面体Mx和多面体My模型表面对应的顶点选取区域内随机选取的测试点的编码(经解码后可在多面体Mx或多面体My的点结构体数组中的找到相应的顶点索引十进制编号,该行中存储的是该点在物体坐标系下的坐标),ei中的编码可由0、1随机填充。
在计算目标函数d时,从多面体Mx和多面体My的点结构体数组中读取的是局部坐标系下的三维坐标必须经以下过式转换到全局坐标下才能够进行统一计算,
Vglobal=Vlocal×W,
其中,Vlocal表示局部坐标系下的某顶点,Vglobal是Vlocal对应的全局坐标系下的坐标,
Figure BDA0001692143650000111
其中,
Figure BDA0001692143650000112
分别表示局部坐标系相对于全局坐标系的三个基向量,p(px,py,pz)表示局部坐标系的原点。
步骤S3-3:
从顶点选取区域中随机选取测试顶点对作为染色体来构成初始种群p0
步骤S3-4:
根据计算规则计算种初始种群p0中每个染色体的适应度函数值ε。
步骤S3-5:
将适应度函数值ε最小的染色体保留并复制到下一代种群中作为复制种群。
步骤S3-6:
按照轮盘赌策略从初始种群p0的所有染色体中选择父代个体。
步骤S3-7:
对父代个体结合Alopex算法进行遗传操作得到变异种群、交换种群以及交叉种群。
其中,由父代个体得到变异种群的过程为:
(1)将父代个体作为t-2时刻的变量值。
(2)从父代个体中选取适应度函数值ε最大的染色体并对其头部的每一位进行随机测试,当满足变异概率时,对编码进行重置从而产生中间一代染色体,该中间一代染色体作为t-1时刻的变量值。在本实施例中,对编码进行重置进行重置指的是编码是“1”的变“0”,编码是“0”的变“1”。
(3)对中间一代染色体进行Alopex算法的基本操作,得到新个体,该新个体为t时刻的变量值,新个体作为变异种群。
其中,Alopex算法中有两个重要的参数(行走步长δ和温度T)需要针对本实施例的具体问题来确定。在本实施例中,由父代染色体分别得到变异种群、交换种群以及交叉种群的过程中所涉及到的Alopex算法的实施过程是相同的,因此,以由父代个体得到变异种群的过程所涉及的Alopex算法为例进行详细说明。
(1)行走步长δ的确定过程为:
x1[n1,n2,e1]对应第1个新个体在t-2时刻的父代个体的变量值,x′1[n′1,n′2,e′1]对应第1个新个体在t-1时刻的中间一代染色体的变量值,则第1个新个体在t时刻的变量值
Figure BDA0001692143650000121
通过以下公式确定,
xi(t)=xi(t-1)+δi(t),
xi(t)表示第i个新个体在t时刻的变量值,
Figure BDA0001692143650000122
pi(t)表示第i个新个体在t时刻由随机函数产生的随机概率,
Figure BDA0001692143650000123
Figure BDA0001692143650000124
表示父代染色体和中间一代染色体的距离,还表示单个多面体上的两个顶点间的最短距离,di表示测试顶点之间的距离,xi(t)=xi(t-1)+rmin表示以xi(t-1)为圆心,以rmin为半径的圆区域内寻找距离xi(t-1)最近的顶点,xi(t)=xi(t-1)+rmax表示以xi(t-1)为圆心,以rmax为半径的圆区域内寻找距离xi(t-1)最远的顶点,
(2)温度T的确定过程为:
Figure BDA0001692143650000131
Figure BDA0001692143650000132
分别表示两个多面体的顶点发生改变时所产生的空间位置变化量,在世界坐标系下总的变化量
Figure BDA0001692143650000133
Figure BDA0001692143650000134
Figure BDA0001692143650000135
表示
Figure BDA0001692143650000136
的向量长度,
Figure BDA0001692143650000137
Pk表示每一个t-2时刻的父代个体在t-1时刻发生变化产生中间一代染色体相应的遗传操作发生的概率,Δtk是根据第k个t-2时刻的父代个体与之在t-1时刻发生变化产生的中间一代染色体计算得到的Δi(t)。
由父代个体得交换种群的过程为:
(1)将父代个体作为t-2时刻的变量值。
(2)从父代个体中以IS插串或RIS插串的变换概率随机选取染色体并按照参数设置进行相应的移位变换操作即在该染色体基因的尾部中随机选择一段子串然后将该子串插入头部随机指定的一个位置从而产生新个体,即中间一代染色体,该中间一代染色体作为t-1时刻的变量值。
其中,IS插串不允许将子串插入头部的首位置,而RIS插串允许将子串插入头部的首位置。这两种移位操作允许将基因的非编码区域(尾部编码部分)部分基因得以传给下一代个体。
(3)对中间一代染色体进行Alopex算法的基本操作,得到新个体,该新个体为t时刻的变量值,新个体作为交换种群。
由父代个体得交叉种群的过程为,
(1)将父代个体作为t-2时刻的变量值。
(2)从父代个体中分别以单点、两点重组概率随机选取两个染色体,然后两两配对,随机选择交叉点对匹配位串交叉繁殖产生两个子个,即中间一代染色体,这两个中间一代染色体作为t-1时刻的变量值。
其中,两点重组是在两个父代染色体上随机选取两个交叉点,然后交换交叉点间的染色体部分;而单点重组是在两个父代染色体上随机选择一个交叉位置,交换交叉点后的染色体部分,从而得到两个子染色体。上述两种重组操作的起始的交叉位置均随机设在基因头部位置以加快算法收敛。
(3)对中间一代染色体进行Alopex算法的基本操作,得到新个体,该新个体为t时刻的变量值,新个体作为交叉种群。
步骤S3-8:
复制种群、异种群、交换种群以及交叉种群构成新一代种群p1
步骤S3-9:
根据计算规则计算种新一代种群p1中每个染色体的适应度函数值ε1,并评价该种群。
步骤S3-10:
判断是否满足算法终止条件,该终止条件为k>kmax或适应度函数值的差值Δε1≥Δεmax。即只需要k>kmax,终止;只需要Δε1≥Δεmax,终止。
步骤S3-11:
如果满足算法终止条件,输出最优染色体,即最近顶点对,然后结束程序。
步骤S3-12:
如果不满足算法终止条件,k数值增长1并对新一代种群循环进行步骤S3-5~步骤S3-13。
图4是两个多面体之间出现最近距离的部位的情况示意图。
如图4所示,图4(a)表示两个多面体之间出现最近距离的部位是顶点与顶点;图4(b)表示两个多面体之间出现最近距离的部位是顶点与边;图4(c)表示两个多面体之间出现最近距离的部位是顶点与面;图4(d)表示两个多面体之间出现最近距离的部位是边与边;图4(e)表示两个多面体之间出现最近距离的部位是边与面;图4(f)表示两个多面体之间出现最近距离的部位是面与面。图4中的AA'是本实施例所涉及的方法所求得的最近顶点;AB'、BB'表示两个多面体之间出现最近距离的精确部位。
也就是说,通过本实施例的步骤S3得到的只是多面体Mx的顶点和多面体My上的顶点之间的最近距离,但顶点与顶点之间的最近距离并不一定代表两个多面体之间的最近距离,因此如果直接将最近顶点对之间的距离作为两个多面体之间的最近距离是存在误差的,尤其是当三维模型表面进行三角网格化的过程中所生成的三角面片过于稀疏时,所求结果与真实结果之间的误差较大。
基于上述情况,本实施例在步骤S3之后还设计了步骤S4来对多面体Mx和多面体My之间的距离精确求解。
步骤S4,通过最近顶点对对多面体Mx和多面体My之间的最近距离精确求解得到最小间距。
其中,最近顶点对包括多面体Mx上的顶点A和多面体My上的顶点A'。
步骤S4包括以下子步骤,
步骤S4-1:
将顶点A和顶点A'之间的方向矢量
Figure BDA0001692143650000161
作为第一相对标准方向矢量。
步骤S4-2:
分别计算以顶点A作为顶点的三角网格面片的法向量与第一相对标准方向矢量之间的夹角的余弦值并将余弦值最大的三角网格面片作为第一目标面片。
步骤S4-3:
将顶点A'和顶点A之间的方向矢量
Figure BDA0001692143650000162
作为第二相对标准方向矢量。
步骤S4-4:
分别计算以顶点A'作为顶点的三角网格面片的法向量与第二相对标准方向矢量之间的夹角的余弦值并将余弦值最大的三角网格面片作为第二目标面片。
步骤S4-5:
从第一目标面片和第二目标面片上各随机选取N-1个顶点,并保留顶点A'和顶点A,通过GEP算法进行计算得到最小间距。其中,顶点A'和顶点A的组合编码作为GEP算法中产生的每一代子群中的一个固定的染色体。
算法的效率比较
采用本实施例所涉及的方法(简称GEP-Alopex)计算车式闸刀与电力开关柜这两个三维模型之间的最近距离,并将该计算结果与分别采用GEP算法、Alopex算法以及遗传-爬山混合算法同样求解车式闸刀与电力开关柜的最近距离的结果进行比较。
图5是车式闸刀与电力开关柜的图片。
如图5所示,图5(a)是车式闸刀与电力开关柜的相对位置的远视图,图5(b)是车式闸刀与电力开关柜的相对位置的近视图,图5(c)表示电力开关柜的中间柜门三角网格化后的表现形式,图5(d)是车式闸刀的各部件三角网格化后的表现形式。从图5可以看出,车式闸刀与电力开关柜均是凸面体和凹面体相混合的一般多面体。
表1车式闸刀与电力开关柜两个三维模型测试数据的相关信息
物体名称 车式闸刀 电力开关柜
模型大小(长×宽×高)m 1×1×1.5 1×1×2
三角面片数目 3266 1241
顶点数目 9798 3723
表2遗传-爬山、GEP、GEP-Alopex与Alopex算法参数设置
Figure BDA0001692143650000171
Figure BDA0001692143650000181
一般情况下为了进行场景实时绘制所用三维模型表面的三角面片往往做的较大,单独使用GEP算法、Alopex算法或利用一般智能优化算法只能求解得到三角形顶点间的间距而忽略掉了其他五种情况(顶点与边、顶点与面、边与边、边与面、面与面)以致频频出现较大误差无法获得精确间距值。
图6是车式闸刀与电力开关柜的中间柜门的最近距离的不同求解方法的示意图。
如图6所示,在车式闸刀的两个三角网格顶点处出发有箭头a、箭头b以及箭头c。其中,箭头a表示单独使用GEP算法求解得到最近距离时所找到的两个三角形顶点;箭头b表示单独使用Alopex算法以及单独使用遗传-爬山算法求解得最近距离时所找到的两个三角形顶点;箭头c表示采用本实施例的GEP-Alopex方法求解得到最小间距时所找到的两个顶点。箭头b和箭头c的尾部起始于同一车式闸刀的三角网格顶点表示GEP-Alopex方法在不进行精确求解的过程时也能够找到与Alopex算法、遗传-爬山混合算法最终一样的求解顶点对。其中箭头c在中间柜门上的顶点并不是中间柜门三角面片的顶点,而是由本实施例的方法在精确求解时得到的随机采样点,也就是说本实施例的GEP-Alopex方法能够得到单独使用GEP算法、Alopex算法或利用一般智能优化算法所忽略掉的“顶点与面之间的最近距离”这一情况下的精确解。
图7是分别采用遗传-爬山、GEP、GEP-Alopex与Alopex算法对车式闸刀与电力开关柜的最近距离求解所得的结果示意图。
如图7所示,根据表2对遗传-爬山、GEP、GEP-Alopex与Alopex算法进行参数设置对车式闸刀与电力开关柜的中间柜门的最近距离求解。图7(A)表示单独使用GEP算法的求解结果,图7(B)表示单独使用Alopex算法的求解结果,图7(C)表示使用本实施例中的方法(GEP-Alopex)的求解结果,图7(D)表示单独使用遗传-爬山混合算法的求解结果。
从图7可以看出,单独使用Alopex算法(B)求得的最近间距是32.169874cm,花费的时间是337.496ms,耗时最长。使用遗传-爬山混合算法(D)求得的最近间距是32.169874cm,花费的时间是293.683ms。结合图6说明,遗传-爬山混合算法与Alopex算法一样只能求解分属两个三维模型表面上的两个三角形顶点对之间的最近间距,它们的求解精度可达到一致。但遗传-爬山混合算法求解速度略快于Alopex算法,因为遗传-爬山没有较复杂的参数求解计算。
单独使用GEP算法(A)求得的最近间距是48.437254cm,花费的时间是67.375ms。单独使用GEP算法(A)求得的最近间距远大于其它三种算法的计算结果即求解精度最差,这是由于GEP算法陷入了局部最优,结合图6可见,其测试点对中位于车式闸刀上的顶点范围停留在了车式闸刀第二个触头上,此外该方法也只能求解分属两个三维模型表面上的两个三角形顶点对之间的最近间距。该算法的求解速度最快,这是由于GEP算法的快速计算性能决定的。
本实施例中的方法(GEP-Alopex)(C)求得的最近间距是30.134637cm,计算时间是141.247ms。本实施例中的方法的计算时间约为性能较好的遗传-爬山算法的二分之一,并且计算结果最为精确,这是因为本实施例中的方法在精确求解的过程中第二次使用了GEP算法,因此慢于单纯的GEP算法而快于其它两种算法,而且该方法还结合了Alopex算法优异的爬坡能力使其收敛性能优于GEP算法而不差于遗传-爬坡算法和Alopex算法。
综上所述,本实施例中的方法求解计算两个一般多面体最近距离时精度更高、收敛性能更好,更适宜求解一般凹凸多面体间的最近间距。
实施例的作用与效果
根据本实施例所涉及的求解三维空间内任意两个多面体间的最近距离的方法,因为将多面体Mx和多面体My的三维模型表面三角网格化并进行预处理得到处理信息,然后对处理信息采用背面剔除算法进行处理得到顶点选取区域,再对顶点选取区域内的测试顶点对通过基因表达式编程的方法求解得到最近顶点对,并且在基因表达式编程的方法的遗传操作过程中使用了Alopex算法,最后对多面体Mx和多面体My之间的最近距离精确求解得到最小间距,所以通过本方法能够实现对三维空间内任意两个多面体尤其是凸面体和凹面体之间的最近距离进行求解,并且求得的最小间距的精度非常高,有助于维修人员模拟完成设备零部件的精确安装。此外,将多面体和多面体的三维模型表面三角网格化并进行预处理,便于快速提取相关信息加快后续最近距离的求解速度;对处理信息采用背面剔除算法进行处理,降低顶点选取的盲目性进而加速后续算法的收敛,这些过程使得整个方法的计算时间大大缩短。
进一步地,通过将本实施例的方法与分别采用GEP算法、Alopex算法以及遗传-爬山混合算法求解两个一般多面体间的最近距离的结果进行比较,结果表明本实施例中的方法的求解结果精度最高同时用时较少,进而证明本实施例中的方法求解计算两个一般多面体最近距离时精度更高、收敛性能更好,更适宜求解一般凹凸多面体间的最近间距。
上述实施方式为本发明的优选案例,并不用来限制本发明的保护范围。

Claims (8)

1.一种求解三维空间内任意两个多面体间的最近距离的方法,两个所述多面体中的一个为车式闸刀,另一个为电力开关柜,两个所述多面体均为凸面体和凹面体相混合的一般多面体,其特征在于,包括以下步骤:
步骤S1,分别将多面体Mx和多面体My的三维模型表面三角网格化并进行预处理得到处理信息;
步骤S2,对所述处理信息采用背面剔除算法进行处理得到顶点选取区域,该顶点选取区域包括多个由所述多面体Mx和所述多面体My的顶点构成的测试顶点对;
步骤S3,对所述顶点选取区域内的所述测试顶点对内的两个顶点之间的最近距离求解得到最近顶点对,该最近顶点对的间距为所述多面体Mx和所述多面体My之间的最近距离的近似解;
步骤S4,通过所述最近顶点对对所述多面体Mx和所述多面体My之间的最近距离精确求解得到最小间距,
其中,步骤S3包括以下子步骤,
步骤S3-1,令循环次数环次数k=0,
步骤S3-2,设定最大评价次数kmax和适应度函数值的最大差值△εmax
步骤S3-3,从所述顶点选取区域中随机选取测试顶点对作为染色体来构成初始种群p0
步骤S3-4,根据计算规则计算所述初始种群p0中每个染色体的适应度函数值ε,
步骤S3-5,将适应度函数值ε最小的染色体保留并复制到下一代种群中作为复制种群,
步骤S3-6,按照轮盘赌策略从所述初始种群p0的所有染色体中选择父代个体,
步骤S3-7,对所述父代个体结合Alopex算法进行遗传操作得到变异种群、交换种群以及交叉种群,
步骤S3-8,所述复制种群、所述变异种群、所述交换种群以及所述交叉种群构成新一代种群p1
步骤S3-9,根据计算规则计算所述新一代种群p1中每个染色体的适应度函数值ε1
步骤S3-10,判断是否满足算法终止条件,该终止条件为k>kmax或适应度函数值的差值△ε1≥△εmax
步骤S3-11,如果满足算法终止条件,输出最优染色体,即所述最近顶点对,然后结束程序,
步骤S3-12,如果不满足算法终止条件,k数值增长1并对新一代种群循环进行步骤S3-5~步骤S3-12。
2.根据权利要求1所述的求解三维空间内任意两个多面体间的最近距离的方法,其特征在于:
其中,所述最近顶点对包括所述多面体Mx上的顶点A和所述多面体My上的顶点A',
步骤S4包括以下子步骤,
步骤S4-1,将所述顶点A和所述顶点A'之间的方向矢量AA'作为第一相对标准方向矢量,
步骤S4-2,分别计算以所述顶点A作为顶点的三角网格面片的法向量与所述第一相对标准方向矢量之间的夹角的余弦值并将余弦值最大的三角网格面片作为第一目标面片,
步骤S4-3,将所述顶点A'和所述顶点A之间的方向矢量A'A作为第二相对标准方向矢量,
步骤S4-4,分别计算以所述顶点A'作为顶点的三角网格面片的法向量与所述第二相对标准方向矢量之间的夹角的余弦值并将余弦值最大的三角网格面片作为第二目标面片,
步骤S4-5,从所述第一目标面片和所述第二目标面片上各随机选取多个顶点通过GEP算法进行计算得到所述最小间距。
3.根据权利要求2所述的求解三维空间内任意两个多面体间的最近距离的方法,其特征在于:
其中,所述法向量为与三角网格面片垂直的单位法向量,且该单位法向量的方向为将三角网格面片的三个顶点以顺时针方向排序以保证在左手法则下该面片法相矢量方向朝外。
4.根据权利要求1所述的求解三维空间内任意两个多面体间的最近距离的方法,其特征在于:
其中,所述多面体Mx为凹面体或凸面体,
所述多面体My为凹面体或凸面体。
5.根据权利要求1所述的求解三维空间内任意两个多面体间的最近距离的方法,其特征在于:
其中,步骤S1中,所述处理信息包括点结构体数组、面矩阵、连接矩阵以及网格顶点间最短路径。
6.根据权利要求1所述的求解三维空间内任意两个多面体间的最近距离的方法,其特征在于:
其中,步骤S3-7中,由所述父代个体得到所述变异种群的过程为,
将所述父代个体作为t-2时刻的变量值,
从所述父代个体中选取适应度函数值ε最大的染色体并对其头部的每一位进行随机测试,当满足变异概率时,对编码进行重置从而产生中间一代染色体,该中间一代染色体作为t-1时刻的变量值,
对所述中间一代染色体进行Alopex算法的基本操作,得到新个体,该新个体为t时刻的变量值,所述新个体作为变异种群。
7.根据权利要求1所述的求解三维空间内任意两个多面体间的最近距离的方法,其特征在于:
其中,由所述父代个体得所述交换种群的过程为,
将所述父代个体作为t-2时刻的变量值,
从所述父代个体中以IS插串或RIS插串的变换概率随机选取染色体并按照参数设置进行相应的移位变换操作产生新个体,生中间一代染色体,该中间一代染色体作为t-1时刻的变量值,
对所述中间一代染色体进行Alopex算法的基本操作,得到新个体,该新个体为t时刻的变量值,所述新个体作为交换种群。
8.根据权利要求1所述的求解三维空间内任意两个多面体间的最近距离的方法,其特征在于:
其中,由所述父代个体得所述交叉种群的过程为,
将所述父代个体作为t-2时刻的变量值,
从所述父代个体中分别以单点、两点重组概率随机选取两个染色体,按照参数设置进行交叉操作产生两个生中间一代染色体,这两个中间一代染色体作为t-1时刻的变量值,
对所述中间一代染色体进行Alopex算法的基本操作,得到新个体,该新个体为t时刻的变量值,所述新个体作为交叉种群。
CN201810597365.5A 2018-06-11 2018-06-11 求解三维空间内任意两个多面体间的最近距离的方法 Active CN108875936B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810597365.5A CN108875936B (zh) 2018-06-11 2018-06-11 求解三维空间内任意两个多面体间的最近距离的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810597365.5A CN108875936B (zh) 2018-06-11 2018-06-11 求解三维空间内任意两个多面体间的最近距离的方法

Publications (2)

Publication Number Publication Date
CN108875936A CN108875936A (zh) 2018-11-23
CN108875936B true CN108875936B (zh) 2020-12-25

Family

ID=64337788

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810597365.5A Active CN108875936B (zh) 2018-06-11 2018-06-11 求解三维空间内任意两个多面体间的最近距离的方法

Country Status (1)

Country Link
CN (1) CN108875936B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112801435B (zh) * 2019-11-13 2023-11-21 北京博超时代软件有限公司 变电站防火校验方法和装置、设备及存储介质
CN112569602B (zh) * 2020-12-25 2022-08-30 珠海金山数字网络科技有限公司 在虚拟场景中构建地形的方法及装置
CN114386814B (zh) * 2021-12-31 2022-12-06 广州市城市规划勘测设计研究院 一种公共服务设施服务半径获取方法及装置
CN115908542B (zh) * 2022-10-31 2023-09-19 中交第四航务工程勘察设计院有限公司 基于bim的多面体间距离快速计算方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101609563A (zh) * 2009-07-27 2009-12-23 浙江工商大学 一种三维模型形状特征二叉树的构建方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2001247627A1 (en) * 2000-03-22 2001-10-03 3-Dimensional Pharmaceuticals, Inc. System, method, and computer program product for representing object relationships in a multidimensional space

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101609563A (zh) * 2009-07-27 2009-12-23 浙江工商大学 一种三维模型形状特征二叉树的构建方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
NURBS曲面间最小距离算法研究及其计算机实现;姜鹏;《中国优秀博硕士学位论文全文数据库(硕) 信息科技辑》;20040915(第03期);全文 *
Three-View Matching Algorithm for Multipolyhedron Reconstruction Using Genetic Algorithm;JIANN-DER LEE等;《Computers and Mathematics with Applications》;20011231;第1465-1483页 *
基于遗传算法的凸多面体间碰撞检测算法研究;金汉均 等;《华中师范大学学报(自然科学版)》;20060331;第40卷(第01期);第25-28页 *

Also Published As

Publication number Publication date
CN108875936A (zh) 2018-11-23

Similar Documents

Publication Publication Date Title
CN108875936B (zh) 求解三维空间内任意两个多面体间的最近距离的方法
Sfikas et al. Exploiting the PANORAMA Representation for Convolutional Neural Network Classification and Retrieval.
US5056031A (en) Apparatus for detecting the collision of moving objects
Frazer Creative design and the generative evolutionary paradigm
EP2538359A2 (en) Boundary handling for particle-based simulation
KR20180004226A (ko) 고전적 프로세서 상에서 양자-유사 계산을 에뮬레이트하기 위한 퀀톤 표현
CN108230453A (zh) 将3d场景自动划分成由计算资源进行处理的多个分区
JP5424883B2 (ja) 数値的にシミュレートされた2つのオブジェクト間の衝突を検出する方法および装置
CN101937453B (zh) 一种基于加权拓扑约束比较的三维模型检索方法
Kwon et al. Super rays and culling region for real-time updates on grid-based occupancy maps
CN108564600A (zh) 运动物体姿态跟踪方法及装置
Feng et al. Point cloud registration algorithm based on the grey wolf optimizer
CN113961738A (zh) 一种多特征铸件三维模型检索方法及装置
Amoiralis et al. Freeform deformation versus B-spline representation in inverse airfoil design
CN102693350B (zh) 面向虚拟现实牙科操作训练的多点接触力觉反馈系统
Kim et al. GraphDistNet: A graph-based collision-distance estimator for gradient-based trajectory optimization
Huang et al. Incremental non-Gaussian inference for SLAM using normalizing flows
Takai et al. A cellular automaton model of particle motions and its applications
CN114742944A (zh) 面向工业机器人路径规划的保守碰撞检测方法
Zhong et al. Real-time semantic 3d dense occupancy mapping with efficient free space representations
Zhang et al. Assembling and disassembling planar structures with divisible and atomic components
CN110210281A (zh) 基于球面分形卷积神经网络的三维点云识别方法及装置
Khamayseh et al. Use of the spatial kD-tree in computational physics applications
Merrell et al. Constraint-based model synthesis
CN107239559A (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