CN108053484A - 一种基于法向平均的常平均曲率曲面构建方法 - Google Patents

一种基于法向平均的常平均曲率曲面构建方法 Download PDF

Info

Publication number
CN108053484A
CN108053484A CN201711322969.0A CN201711322969A CN108053484A CN 108053484 A CN108053484 A CN 108053484A CN 201711322969 A CN201711322969 A CN 201711322969A CN 108053484 A CN108053484 A CN 108053484A
Authority
CN
China
Prior art keywords
mrow
msub
munder
face
vertex
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.)
Pending
Application number
CN201711322969.0A
Other languages
English (en)
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.)
Wuhan University WHU
Original Assignee
Wuhan University WHU
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 Wuhan University WHU filed Critical Wuhan University WHU
Priority to CN201711322969.0A priority Critical patent/CN108053484A/zh
Publication of CN108053484A publication Critical patent/CN108053484A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/30Polynomial surface description

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Algebra (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)
  • External Artificial Organs (AREA)
  • Measurement Of Radiation (AREA)

Abstract

本发明公开了一种基于法向平均的常平均曲率曲面构建方法,首先读取网格,计算网格每个面的单位法向量以及其邻居面平均单位法向量;然后根据每个面的单位法向量以及其邻居面平均单位法向量构造旋转矩阵;接着计算网格顶点的拉普拉斯矩阵,利用旋转矩阵计算网格顶点旋转后坐标矩阵,利用拉普拉斯矩阵和顶点旋转后的坐标求解线性方程组,得到顶点的实际新坐标;最后更新网格顶点坐标,输出显示网格,至此完成一次迭代;判断终止条件,若符合条件则停止迭代,得到最终的输出模型,否则将本次输出网格作为输入返回执行第一步。本发明具有较好的鲁棒性,适应性以及高效性,能够有效地解决当前常平均曲率曲面构建方法中适应性差,效率低、面片翻转问题。

Description

一种基于法向平均的常平均曲率曲面构建方法
技术领域
本发明属于三维网格处理技术领域,具体涉及一种基于法向量平均的常平均曲率曲面的构造方法。
背景技术
平均曲率处处为常数的曲面被称为常平均曲率(CMC)曲面,极小曲面是CMC曲面的一种特殊情况,它的平均曲率处处为零。在许多建筑设计和工程创作中,CMC曲面因具有较高的美学价值和结构稳定性而备受欢迎,建筑中的张力膜结构可以被建模为极小曲面。充气建筑,包括充气圆顶和外壳,也被建模为CMC曲面。
CMC曲面构造是计算机图形学中的一个具有挑战性的问题。构建CMC的方法有许多种,通常使用的CMC表面建模方法是优化某些能量函数,例如willmore能,找到曲面的离散近似,通常是三角网格的形式。例如,一个CMC曲面可以倍计算为在体积约束下面积函数最小的曲面。基于这一性能,可以提出许多通过在网格上求解约束优化问题来计算CMC曲面的方法。
通常,一个网格模型由网格顶点和网格连通度来定义。当使用网格进行形状表示时,网格质量的两个主要标准是网格顶点的分布和边连通度。在许多几何任务中,如数值模拟和差分表面性质的估计,都需要高质量的网格,如网格光滑度。网格质量差是现有CMC曲面建模方法的一个主要问题。这些方法缺乏一种优化网格连通性的机制。通常,这种方法只更新网格顶点的位置,同时保持初始网格的相同的边缘连通性,从而将初始网格迭代到最终的形状。其结果是,由于元素表面形状不佳,而导致最终的网格是真实CMC表面的较差表示。另外,利用曲率流构建CMC曲面也是一种有效方法,例如共形曲率流,单位法向流等,利用曲率流构建CMC曲面具有鲁棒性以及高效性。
发明内容
本发明的目的在于提供一种基于法向平均的CMC曲面构建方法。该方法可以解决现有的优化能量函数方法对初始网格质量要求比较高,适应性差,效率低等问题。该方法具有较强的鲁棒性和适应性,具有较快的收敛速度,并且对于一些复杂的三维网格模型,能收敛达到很好的CMC曲面效果,并且不会出现三角形翻转,网格撕裂等现象。
本发明所采用的技术方案是:一种基于法向平均的常平均曲率曲面构建方法,其特征在于,包括以下步骤:
步骤1:读取网格,计算网格每个面的单位法向量以及其邻居面平均单位法向量;
步骤2:根据每个面的单位法向量以及其邻居面平均单位法向量构造旋转矩阵;
步骤3:计算网格顶点的拉普拉斯矩阵,利用旋转矩阵计算网格顶点旋转后坐标矩阵,利用拉普拉斯矩阵和顶点旋转后的坐标求解线性方程组,得到顶点的实际新坐标;
步骤4:更新网格顶点坐标,输出显示网格,至此完成一次迭代;判断终止条件,若符合条件则停止迭代,得到最终的输出模型,否则将本次输出网格作为输入返回执行步骤1。
本发明的有益效果在于:本发明提供了一种基于法向平均的CMC曲面的构建方法,通过法向量平均求解线性方程组迭代更新网格定点位置来将网格变形为CMC曲面。其中可以通过参数控制法向量平均方法,使得方法对于不同的网格具有适应性以及高效性,提供了一个更加鲁棒和高效性的CMC曲面构建方法。
附图说明
图1为本发明实施例的流程图;
图2(a)为本发明实施例输入的原始封闭模型;
图2(b)为本发明实施例迭代60次输出的模型;
图2(c)为本发明实施例迭代120次输出的模型;
图2(d)为本发明实施例迭代180次输出的模型;
图2(e)为本发明实施例迭代240次输出的模型
图2(f)为本发明实施例最终的输出CMC模型;
图3为本发明实施例构建拉普拉斯矩阵时所使用的三角形内角示意图;
图4(a)为本发明实施例输入的原始带边界模型;
图4(b)为本发明实施例迭代60次输出的模型;
图4(c)为本发明实施例迭代120次输出的模型;
图4(d)为本发明实施例最终的CMC曲面模型。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
请见图1,本发明提供的一种基于法向平均的常平均曲率曲面构建方法,包括以下步骤:
步骤1:读取网格,计算网格每个面的单位法向量以及其邻居面平均单位法向量;
步骤1:在本实施方式中,输入的三维网格模型如图2(a)所示。
步骤101:计算计算每个面的单位法向量currentNormal。每个面的单位法向量为从某一顶点出发的两条边的叉积。计算方法为:
其中pi,i=1,2,3,为每个面的三个顶点。
步骤102:计算每个面的邻居平均单位法向量targetNormal。根据参数的不同,计算平均法向量的方法可以有多种,主要包括算术平均以及加权平均方法。
算术平均法向量计算方法为:
其中,nj为面j的法向量,Neighbor(i)为面i的N圈邻居面;
加权平均法向量计算方法为:
其中,nj为面j的的法向量,Areaj为其面积。
利用不同的方法对算术平均方法和加权平均方法改进,可以使得本方法的适用性更强。
对算数平均方法的改进包括所有面算术平均,相邻加速算数平均,动态圈数加速算数平均方法。计算方式如下:
所有面算术平均方法:
其中,face为网格所有面;
相邻加速算数平均方法:
其中,f表示网格所有面的个数;Acclerator=0.1,为加速因子;将结果单位化,即得到平均单位法向量。
动态圈数加速算数平均方法:
其中,k满足的条件为:FaceCurvaturej表示面j的曲率,MaxCurvature为用户设置的一个曲率阈值,将结果单位化,即得到平均单位法向量。
对加权平均方法的改进包括所有面加权平均,相邻加速加权平均,动态圈数加速加权平均方法。计算方法如下:
所有面加权平均方法:
相邻加速加权平均方法:
其中,f表示网格所有面的个数;Acclerator=0.1,为加速因子;将结果单位化,即得到平均单位法向量。
动态圈数加速加权平均方法:
其中,k满足的条件为:FaceCurvaturej表示面j的曲率,MaxCurvature为用户设置的一个曲率阈值,将结果单位化,即得到平均单位法向量。
计算每个面的邻居平均单位法向量targetNormal,本例采用的平均方法为算术平均方法。
步骤2:根据每个面的单位法向量以及其邻居面平均单位法向量构造旋转矩阵;
计算rot旋转矩阵的方法为:
其中(x,y,z)=currentNormal×targetNormal,θ为向量currentNormal与targetNormal之间的夹角。
步骤3:构建网格顶点的拉普拉斯矩阵LeftA,利用旋转矩阵rot计算旋转之后的顶点坐标矩阵RightB,求解线性方程组LeftAX=RightB,即得到网格顶点的新坐标矩阵X。
步骤301:计算网格顶点的拉普拉斯矩阵LeftA。LeftA是大小为v×v的稀疏矩阵,其中v为网格顶点数。稀疏矩阵LeftA的元素构造如下:
其中,xi~xj表示顶点xi与xj相邻接,αj与βj为边ij所在的两个三角形中与边ij相对的两个内角,如图3所示。
步骤302:根据每个网格顶点的实际坐标与旋转矩阵rot求得旋转后的坐标矩阵RightB。RightB是一个大小为v×3的矩阵,其构造方法为:
其中,N1(i)表示顶点xi的1-ring邻居顶点,xj表示与顶点xi相邻接的所有顶点,edgeij=xi-xj,为边ij的向量表示,等式右边第一项中rotij表示从顶点xi出发的半边所代表的面的旋转矩阵。
WeigthHalfedgeij=cotγ/2;
其中,γ表示半边ij所代表的面存在时,三角形边ij所对的内角。
同理,等式右边第二项中rotji表示从指向顶点xi的半边所代表的面的旋转矩阵。
WeigthHalfedgeji=cotγ/2;
其中,γ表示半边ji所代表的面存在时,三角形边ji所对的内角。
步骤303:求解线性方程组LeftA X=RightB,即得到网格顶点的新坐标矩阵X。
步骤4:根据顶点坐标矩阵X更新网格顶点,输出网格,至此完成一次迭代。然后计算计算顶点平均曲率,当顶点平均曲率足够平均时,表示已得到最终的常平均曲率曲面,迭代停止,否则将得到的网格作为输入网格返回步骤1,直到完成迭代,输出CMC曲面结果,迭代过程如图2(b)、2(c)、2(d)、2(e)所示,最终输出模型如图2(f)所示。
步骤401:计算每个顶点的Voronoi面积,计算方法如下:
其中,xj表示与顶点xi相邻接的所有顶点,αj与βj分别为边ij所在的两个三角形中与边ij相对的两个内角。
步骤402:计算每个顶点的离散平均曲率,方法如下:
步骤403:判断网格每个顶点的平均曲率是否为常数,若是,表示已得到最终的常平均曲率曲面,迭代停止,否则将得到的网格作为输入网格返回步骤1,直到完成迭代,输出CMC曲面结果。
在本实施例中,通过法向平均方法,将输入网格变形为CMC曲面。本实施方式提供的CMC曲面构建方法,能够有效地解决当前CMC曲面构建方法存在的适应性差,效率低等问题。图4(a)、4(b)、4(c)、4(d)展示了将本方法应用在有边界模型得到的迭代过程,证明了本方法处理有边界模型的有效性。
应当理解的是,本说明书未详细阐述的部分均属于现有技术。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。

Claims (9)

1.一种基于法向平均的常平均曲率曲面构建方法,其特征在于,包括以下步骤:
步骤1:读取网格,计算网格每个面的单位法向量以及其邻居面平均单位法向量;
步骤2:根据每个面的单位法向量以及其邻居面平均单位法向量构造旋转矩阵;
步骤3:计算网格顶点的拉普拉斯矩阵,利用旋转矩阵计算网格顶点旋转后坐标矩阵,利用拉普拉斯矩阵和顶点旋转后的坐标求解线性方程组,得到顶点的实际新坐标;
步骤4:更新网格顶点坐标,输出显示网格,至此完成一次迭代;判断终止条件,若符合条件则停止迭代,得到最终的输出模型,否则将本次输出网格作为输入返回执行步骤1。
2.根据权利要求1所述的基于法向平均的常平均曲率曲面构建方法,其特征在于,步骤1的具体实现包括以下子步骤:
步骤1.1:对于输入的网格,计算每个面的单位法向量;每个面的单位法向量)为从某一顶点出发的两条边的叉积;计算方法为:
其中pi,i=1,2,3,为每个面的三个顶点;
步骤1.2:计算每个面的邻居平均单位法向量。
3.根据权利要求2所述的基于法向平均的常平均曲率曲面构建方法,其特征在于,步骤1.2中,根据参数的不同,计算平均单位法向量的方法包括算术平均以及加权平均方法;
算术平均单位法向量计算方法为:
<mrow> <mi>A</mi> <mi>r</mi> <mi>i</mi> <mi>t</mi> <mi>h</mi> <mi>m</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>c</mi> <mi>N</mi> <mi>o</mi> <mi>r</mi> <mi>m</mi> <mi>a</mi> <mi>l</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <munder> <mi>&amp;Sigma;</mi> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>N</mi> <mi>e</mi> <mi>i</mi> <mi>g</mi> <mi>h</mi> <mi>b</mi> <mi>o</mi> <mi>r</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </munder> <msub> <mi>n</mi> <mi>j</mi> </msub> </mrow> <mrow> <mo>|</mo> <mo>|</mo> <munder> <mi>&amp;Sigma;</mi> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>N</mi> <mi>e</mi> <mi>i</mi> <mi>g</mi> <mi>h</mi> <mi>b</mi> <mi>o</mi> <mi>r</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </munder> <msub> <mi>n</mi> <mi>j</mi> </msub> <mo>|</mo> <mo>|</mo> </mrow> </mfrac> <mo>;</mo> </mrow>
其中,nj为面j的法向量;Neighbor(i)为面i的N圈邻居面;
加权平均单位法向量计算方法为:
<mrow> <mi>W</mi> <mi>e</mi> <mi>i</mi> <mi>g</mi> <mi>h</mi> <mi>t</mi> <mi>e</mi> <mi>d</mi> <mi>N</mi> <mi>o</mi> <mi>r</mi> <mi>m</mi> <mi>a</mi> <mi>l</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <munder> <mi>&amp;Sigma;</mi> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>N</mi> <mi>e</mi> <mi>i</mi> <mi>g</mi> <mi>h</mi> <mi>b</mi> <mi>o</mi> <mi>r</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </munder> <msub> <mi>n</mi> <mi>j</mi> </msub> <mo>*</mo> <msub> <mi>Area</mi> <mi>j</mi> </msub> </mrow> <mrow> <mo>|</mo> <mo>|</mo> <munder> <mi>&amp;Sigma;</mi> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>N</mi> <mi>e</mi> <mi>i</mi> <mi>g</mi> <mi>h</mi> <mi>b</mi> <mi>o</mi> <mi>r</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </munder> <msub> <mi>n</mi> <mi>j</mi> </msub> <mo>*</mo> <msub> <mi>Area</mi> <mi>j</mi> </msub> <mo>|</mo> <mo>|</mo> </mrow> </mfrac> <mo>;</mo> </mrow>
其中,nj为面j的法向量,Areaj为面j的面积。
4.根据权利要求2所述的基于法向平均的常平均曲率曲面构建方法,其特征在于,步骤1.2中,计算平均单位法向量的方法为算术平均法,具体包括所有面算术平均、相邻加速算数平均、动态圈数加速算数平均;
所有面算术平均单位法向量计算方法为:
<mrow> <mi>A</mi> <mi>r</mi> <mi>i</mi> <mi>t</mi> <mi>h</mi> <mi>m</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>c</mi> <mi>A</mi> <mi>l</mi> <mi>l</mi> <mi>N</mi> <mi>o</mi> <mi>r</mi> <mi>m</mi> <mi>a</mi> <mi>l</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <munder> <mo>&amp;Sigma;</mo> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>f</mi> <mi>a</mi> <mi>c</mi> <mi>e</mi> </mrow> </munder> <msub> <mi>n</mi> <mi>j</mi> </msub> </mrow> <mrow> <mo>|</mo> <mo>|</mo> <munder> <mo>&amp;Sigma;</mo> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>f</mi> <mi>a</mi> <mi>c</mi> <mi>e</mi> </mrow> </munder> <msub> <mi>n</mi> <mi>j</mi> </msub> <mo>|</mo> <mo>|</mo> </mrow> </mfrac> <mo>;</mo> </mrow>
其中,nj为面j的法向量;face为网格所有面;
相邻加速算数平均单位法向量计算方法为:
<mrow> <mi>A</mi> <mi>r</mi> <mi>i</mi> <mi>t</mi> <mi>h</mi> <mi>m</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>c</mi> <mi>A</mi> <mi>c</mi> <mi>c</mi> <mi>N</mi> <mi>o</mi> <mi>r</mi> <mi>m</mi> <mi>a</mi> <mi>l</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mn>1</mn> <mi>f</mi> </mfrac> <munder> <mi>&amp;Sigma;</mi> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>f</mi> <mi>a</mi> <mi>c</mi> <mi>e</mi> </mrow> </munder> <msub> <mi>n</mi> <mi>j</mi> </msub> <mo>*</mo> <mi>A</mi> <mi>c</mi> <mi>c</mi> <mi>l</mi> <mi>e</mi> <mi>r</mi> <mi>a</mi> <mi>t</mi> <mi>o</mi> <mi>r</mi> <mo>+</mo> <mfrac> <mrow> <munder> <mi>&amp;Sigma;</mi> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>N</mi> <mi>e</mi> <mi>i</mi> <mi>g</mi> <mi>h</mi> <mi>b</mi> <mi>o</mi> <mi>r</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </munder> <msub> <mi>n</mi> <mi>j</mi> </msub> </mrow> <mrow> <mo>|</mo> <mo>|</mo> <munder> <mi>&amp;Sigma;</mi> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>N</mi> <mi>e</mi> <mi>i</mi> <mi>g</mi> <mi>h</mi> <mi>b</mi> <mi>o</mi> <mi>r</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </munder> <msub> <mi>n</mi> <mi>j</mi> </msub> <mo>|</mo> <mo>|</mo> </mrow> </mfrac> <mo>;</mo> </mrow>
其中,f表示网格所有面的个数;Acclerator=0.1,为加速因子;Neighbor(i)为面i的N圈邻居面;将结果单位化,得到平均单位法向量;
动态圈数加速算数平均单位法向量计算方法为:
<mrow> <mi>A</mi> <mi>r</mi> <mi>i</mi> <mi>t</mi> <mi>h</mi> <mi>m</mi> <mi>a</mi> <mi>t</mi> <mi>i</mi> <mi>c</mi> <mi>D</mi> <mi>y</mi> <mi>n</mi> <mi>N</mi> <mi>o</mi> <mi>r</mi> <mi>m</mi> <mi>a</mi> <mi>l</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mn>1</mn> <mi>f</mi> </mfrac> <munder> <mi>&amp;Sigma;</mi> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>f</mi> <mi>a</mi> <mi>c</mi> <mi>e</mi> </mrow> </munder> <msub> <mi>n</mi> <mi>j</mi> </msub> <mo>*</mo> <mi>A</mi> <mi>c</mi> <mi>c</mi> <mi>l</mi> <mi>e</mi> <mi>r</mi> <mi>a</mi> <mi>t</mi> <mi>o</mi> <mi>r</mi> <mo>+</mo> <mfrac> <mrow> <munderover> <mi>&amp;Sigma;</mi> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>N</mi> <mi>e</mi> <mi>i</mi> <mi>g</mi> <mi>h</mi> <mi>b</mi> <mi>o</mi> <mi>r</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> <mi>k</mi> </munderover> <msub> <mi>n</mi> <mi>j</mi> </msub> </mrow> <mrow> <mo>|</mo> <mo>|</mo> <munderover> <mi>&amp;Sigma;</mi> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>N</mi> <mi>e</mi> <mi>i</mi> <mi>g</mi> <mi>h</mi> <mi>b</mi> <mi>o</mi> <mi>r</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> <mi>k</mi> </munderover> <msub> <mi>n</mi> <mi>j</mi> </msub> <mo>|</mo> <mo>|</mo> </mrow> </mfrac> <mo>;</mo> </mrow>
其中,k满足的条件为:FaceCurvaturej表示面j的曲率,MaxCurvature为用户设置的一个曲率阈值;将结果单位化,得到平均单位法向量。
5.根据权利要求2所述的基于法向平均的常平均曲率曲面构建方法,其特征在于,步骤1.2中,计算平均单位法向量的方法为加权平均方法,具体包括所有面加权平均、相邻加速加权平均、动态圈数加速加权平均;
所有面加权平均单位法向量计算方法为:
<mrow> <mi>W</mi> <mi>e</mi> <mi>i</mi> <mi>g</mi> <mi>h</mi> <mi>t</mi> <mi>e</mi> <mi>d</mi> <mi>A</mi> <mi>l</mi> <mi>l</mi> <mi>N</mi> <mi>o</mi> <mi>r</mi> <mi>m</mi> <mi>a</mi> <mi>l</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <munder> <mo>&amp;Sigma;</mo> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>f</mi> <mi>a</mi> <mi>c</mi> <mi>e</mi> </mrow> </munder> <msub> <mi>n</mi> <mi>j</mi> </msub> <mo>*</mo> <msub> <mi>Area</mi> <mi>j</mi> </msub> </mrow> <mrow> <mo>|</mo> <mo>|</mo> <munder> <mo>&amp;Sigma;</mo> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>f</mi> <mi>a</mi> <mi>c</mi> <mi>e</mi> </mrow> </munder> <msub> <mi>n</mi> <mi>j</mi> </msub> <mo>*</mo> <msub> <mi>Area</mi> <mi>j</mi> </msub> <mo>|</mo> <mo>|</mo> </mrow> </mfrac> <mo>;</mo> </mrow>
其中,nj为面j的法向量;Areaj为面j的面积;face为网格所有面;
相邻加速加权平均单位法向量计算方法为:
<mrow> <mi>W</mi> <mi>e</mi> <mi>i</mi> <mi>g</mi> <mi>h</mi> <mi>t</mi> <mi>e</mi> <mi>d</mi> <mi>A</mi> <mi>c</mi> <mi>c</mi> <mi>N</mi> <mi>o</mi> <mi>r</mi> <mi>m</mi> <mi>a</mi> <mi>l</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mn>1</mn> <mi>f</mi> </mfrac> <munder> <mi>&amp;Sigma;</mi> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>f</mi> <mi>a</mi> <mi>c</mi> <mi>e</mi> </mrow> </munder> <msub> <mi>n</mi> <mi>j</mi> </msub> <mo>*</mo> <mi>A</mi> <mi>c</mi> <mi>c</mi> <mi>l</mi> <mi>e</mi> <mi>r</mi> <mi>a</mi> <mi>t</mi> <mi>o</mi> <mi>r</mi> <mo>+</mo> <mfrac> <mrow> <munder> <mi>&amp;Sigma;</mi> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>N</mi> <mi>e</mi> <mi>i</mi> <mi>g</mi> <mi>h</mi> <mi>b</mi> <mi>o</mi> <mi>r</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </munder> <msub> <mi>n</mi> <mi>j</mi> </msub> <mo>*</mo> <msub> <mi>Area</mi> <mi>j</mi> </msub> </mrow> <mrow> <mo>|</mo> <mo>|</mo> <munder> <mi>&amp;Sigma;</mi> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>N</mi> <mi>e</mi> <mi>i</mi> <mi>g</mi> <mi>h</mi> <mi>b</mi> <mi>o</mi> <mi>r</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </munder> <msub> <mi>n</mi> <mi>j</mi> </msub> <mo>*</mo> <msub> <mi>Area</mi> <mi>j</mi> </msub> <mo>|</mo> <mo>|</mo> </mrow> </mfrac> <mo>;</mo> </mrow>
其中,f表示网格所有面的个数;Acclerator=0.1,为加速因子;Neighbor(i)为面i的N圈邻居面;将结果单位化,得到平均单位法向量;
动态圈数加速加权平均单位法向量计算方法为:
<mrow> <mi>W</mi> <mi>e</mi> <mi>i</mi> <mi>g</mi> <mi>h</mi> <mi>t</mi> <mi>e</mi> <mi>d</mi> <mi>D</mi> <mi>y</mi> <mi>n</mi> <mi>N</mi> <mi>o</mi> <mi>r</mi> <mi>m</mi> <mi>a</mi> <mi>l</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mn>1</mn> <mi>f</mi> </mfrac> <munder> <mi>&amp;Sigma;</mi> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>f</mi> <mi>a</mi> <mi>c</mi> <mi>e</mi> </mrow> </munder> <msub> <mi>n</mi> <mi>j</mi> </msub> <mo>*</mo> <mi>A</mi> <mi>c</mi> <mi>c</mi> <mi>l</mi> <mi>e</mi> <mi>r</mi> <mi>a</mi> <mi>t</mi> <mi>o</mi> <mi>r</mi> <mo>+</mo> <mfrac> <mrow> <munderover> <mi>&amp;Sigma;</mi> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>N</mi> <mi>e</mi> <mi>i</mi> <mi>g</mi> <mi>h</mi> <mi>b</mi> <mi>o</mi> <mi>r</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> <mi>k</mi> </munderover> <msub> <mi>n</mi> <mi>j</mi> </msub> <mo>*</mo> <msub> <mi>Area</mi> <mi>j</mi> </msub> </mrow> <mrow> <mo>|</mo> <mo>|</mo> <munderover> <mi>&amp;Sigma;</mi> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <mi>N</mi> <mi>e</mi> <mi>i</mi> <mi>g</mi> <mi>h</mi> <mi>b</mi> <mi>o</mi> <mi>r</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> <mi>k</mi> </munderover> <msub> <mi>n</mi> <mi>j</mi> </msub> <mo>*</mo> <msub> <mi>Area</mi> <mi>j</mi> </msub> <mo>|</mo> <mo>|</mo> </mrow> </mfrac> <mo>;</mo> </mrow>
其中,k满足的条件为:FaceCurvaturej表示面j的曲率,MaxCurvature为用户设置的一个曲率阈值;将结果单位化,得到平均单位法向量。
6.根据权利要求1所述的基于法向平均的常平均曲率曲面构建方法,其特征在于,步骤2中所述旋转矩阵为:
<mrow> <mi>r</mi> <mi>o</mi> <mi>t</mi> <mi>m</mi> <mi>a</mi> <mi>t</mi> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <msup> <mi>x</mi> <mn>2</mn> </msup> <mo>)</mo> <mi>cos</mi> <mi>&amp;theta;</mi> <mo>+</mo> <msup> <mi>x</mi> <mn>2</mn> </msup> </mrow> </mtd> <mtd> <mrow> <mi>x</mi> <mi>y</mi> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>cos</mi> <mi>&amp;theta;</mi> <mo>)</mo> </mrow> <mo>-</mo> <mi>z</mi> <mi> </mi> <mi>sin</mi> <mi>&amp;theta;</mi> </mrow> </mtd> <mtd> <mrow> <mi>y</mi> <mi> </mi> <mi>sin</mi> <mi>&amp;theta;</mi> <mo>+</mo> <mi>x</mi> <mi>z</mi> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>cos</mi> <mi>&amp;theta;</mi> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>z</mi> <mi> </mi> <mi>sin</mi> <mi>&amp;theta;</mi> <mo>+</mo> <mi>x</mi> <mi>y</mi> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>cos</mi> <mi>&amp;theta;</mi> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <msup> <mi>y</mi> <mn>2</mn> </msup> <mo>)</mo> <mi>cos</mi> <mi>&amp;theta;</mi> <mo>+</mo> <msup> <mi>y</mi> <mn>2</mn> </msup> </mrow> </mtd> <mtd> <mrow> <mo>-</mo> <mi>x</mi> <mi> </mi> <mi>sin</mi> <mi>&amp;theta;</mi> <mo>+</mo> <mi>y</mi> <mi>z</mi> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>cos</mi> <mi>&amp;theta;</mi> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <mi>y</mi> <mi> </mi> <mi>sin</mi> <mi>&amp;theta;</mi> <mo>+</mo> <mi>x</mi> <mi>z</mi> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>cos</mi> <mi>&amp;theta;</mi> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mi>x</mi> <mi> </mi> <mi>sin</mi> <mi>&amp;theta;</mi> <mo>+</mo> <mi>y</mi> <mi>z</mi> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>cos</mi> <mi>&amp;theta;</mi> <mo>)</mo> </mrow> </mrow> </mtd> <mtd> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <msup> <mi>z</mi> <mn>2</mn> </msup> <mo>)</mo> <mi>cos</mi> <mi>&amp;theta;</mi> <mo>+</mo> <msup> <mi>z</mi> <mn>2</mn> </msup> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow>
其中(x,y,z)=currentNormal×targetNormal,currentNormal为每个面的单位法向量,targetNormal为每个面的邻居平均单位法向量,θ为向量currentNormal与targetNormal之间的夹角。
7.根据权利要求1所述的基于法向平均的常平均曲率曲面构建方法,其特征在于,步骤3的具体实现包括以下子步骤:
步骤3.1:计算网格顶点的拉普拉斯矩阵LeftA;LeftA是大小为v×v的稀疏矩阵,其中v为网格顶点数;
稀疏矩阵LeftA的元素构造如下:
<mrow> <msub> <mi>LeftA</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <munderover> <mo>&amp;Sigma;</mo> <mrow> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>v</mi> </munderover> <msub> <mi>LeftA</mi> <mrow> <mi>i</mi> <mi>k</mi> </mrow> </msub> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>=</mo> <msub> <mi>x</mi> <mi>j</mi> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>-</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <mrow> <mo>(</mo> <msub> <mi>cot&amp;alpha;</mi> <mi>j</mi> </msub> <mo>+</mo> <msub> <mi>cot&amp;beta;</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>~</mo> <msub> <mi>x</mi> <mi>j</mi> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>0</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>o</mi> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>r</mi> <mi>w</mi> <mi>i</mi> <mi>s</mi> <mi>e</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>;</mo> </mrow>
其中,xi~xj表示顶点xi与xj相邻接,αj与βj为边ij所在的两个三角形中与边ij相对的两个内角;
步骤3.2:根据每个网格顶点的实际坐标与旋转矩阵rot求得旋转后的坐标矩阵RightB;
RightB是一个大小为v×3的矩阵,其构造方法为:
<mrow> <msub> <mi>RightB</mi> <mi>i</mi> </msub> <mo>=</mo> <munder> <mi>&amp;Sigma;</mi> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <msub> <mi>N</mi> <mn>1</mn> </msub> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </munder> <msub> <mi>rot</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mo>*</mo> <msub> <mi>edge</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mo>*</mo> <msub> <mi>WeigthHalfedge</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mo>+</mo> <munder> <mi>&amp;Sigma;</mi> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <msub> <mi>N</mi> <mn>1</mn> </msub> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </munder> <msub> <mi>rot</mi> <mrow> <mi>j</mi> <mi>i</mi> </mrow> </msub> <mo>*</mo> <msub> <mi>edge</mi> <mrow> <mi>i</mi> <mi>j</mi> </mrow> </msub> <mo>*</mo> <msub> <mi>WeigthHalfedge</mi> <mrow> <mi>j</mi> <mi>i</mi> </mrow> </msub> </mrow>
其中,N1(i)表示顶点xi的1-ring邻居顶点;
edgeij=xi-xj,为边ij的向量表示;rotij表示从顶点xi出发的半边所代表的面的旋转矩阵;WeigthHalfedgeij=cotγ/2,γ表示半边ij所代表的面存在时,三角形边ij所对的内角;rotji表示从指向顶点xi的半边所代表的面的旋转矩阵,WeigthHalfedgeji=cotγ/2,γ表示半边ji所代表的面存在时,三角形边ji所对的内角;
步骤3.3:求解线性方程组LeftA X=RightB,即得到网格顶点的新坐标矩阵X。
8.根据权利要求1-7任意一项所述的基于法向平均的常平均曲率曲面构建方法,其特征在于,步骤4的具体实现包括以下子步骤:
步骤4.1:根据顶点坐标矩阵X更新网格顶点,输出网格,至此完成一次迭代;
步骤4.2:计算顶点平均曲率,当网格每个顶点的平均曲率为常数时,表示已得到最终的常平均曲率曲面,迭代停止,否则将得到的网格作为输入网格返回步骤1。
9.根据权利要求8所述的基于法向平均的常平均曲率曲面构建方法,其特征在于,步骤4.2中顶点平均曲率的计算过程包括以下子步骤:
步骤4.2.1:计算顶点的Voronoi面积,计算方法如下:
<mrow> <mi>A</mi> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mn>1</mn> <mn>8</mn> </mfrac> <munder> <mo>&amp;Sigma;</mo> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <msub> <mi>N</mi> <mn>1</mn> </msub> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </munder> <mrow> <mo>(</mo> <msub> <mi>cot&amp;alpha;</mi> <mi>j</mi> </msub> <mo>+</mo> <msub> <mi>cot&amp;beta;</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mo>|</mo> <mo>|</mo> <msub> <mi>x</mi> <mi>j</mi> </msub> <mo>-</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>|</mo> <mo>|</mo> <mo>;</mo> </mrow>
步骤4.2.2:计算每个顶点的离散平均曲率,方法如下:
<mrow> <mi>H</mi> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mn>1</mn> <mrow> <mn>4</mn> <mi>A</mi> </mrow> </mfrac> <mo>|</mo> <mo>|</mo> <munder> <mo>&amp;Sigma;</mo> <mrow> <mi>j</mi> <mo>&amp;Element;</mo> <msub> <mi>N</mi> <mn>1</mn> </msub> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow> </munder> <mrow> <mo>(</mo> <msub> <mi>cot&amp;alpha;</mi> <mi>j</mi> </msub> <mo>+</mo> <msub> <mi>cot&amp;beta;</mi> <mi>j</mi> </msub> <mo>)</mo> </mrow> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>j</mi> </msub> <mo>-</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>|</mo> <mo>|</mo> <mo>;</mo> </mrow>
其中,xj表示与顶点xi相邻接的所有顶点,αj与βj分别为边ij所在的两个三角形中与边ij相对的两个内角,N1(i)表示顶点xi的1-ring邻居顶点。
CN201711322969.0A 2017-12-12 2017-12-12 一种基于法向平均的常平均曲率曲面构建方法 Pending CN108053484A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711322969.0A CN108053484A (zh) 2017-12-12 2017-12-12 一种基于法向平均的常平均曲率曲面构建方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711322969.0A CN108053484A (zh) 2017-12-12 2017-12-12 一种基于法向平均的常平均曲率曲面构建方法

Publications (1)

Publication Number Publication Date
CN108053484A true CN108053484A (zh) 2018-05-18

Family

ID=62132027

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711322969.0A Pending CN108053484A (zh) 2017-12-12 2017-12-12 一种基于法向平均的常平均曲率曲面构建方法

Country Status (1)

Country Link
CN (1) CN108053484A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109431632A (zh) * 2018-09-30 2019-03-08 西安增材制造国家研究院有限公司 一种模拟牙龈变形的方法
CN111695259A (zh) * 2020-06-12 2020-09-22 重庆大学 一种基于3d打印的连续梯度壁厚的tpms结构的加工方法
WO2023024395A1 (zh) * 2021-08-26 2023-03-02 深圳市慧鲤科技有限公司 模型优化方法及装置、电子设备、存储介质、计算机程序、计算机程序产品

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109431632A (zh) * 2018-09-30 2019-03-08 西安增材制造国家研究院有限公司 一种模拟牙龈变形的方法
CN111695259A (zh) * 2020-06-12 2020-09-22 重庆大学 一种基于3d打印的连续梯度壁厚的tpms结构的加工方法
CN111695259B (zh) * 2020-06-12 2024-04-30 重庆大学 一种基于3d打印的连续梯度壁厚的tpms结构的加工方法
WO2023024395A1 (zh) * 2021-08-26 2023-03-02 深圳市慧鲤科技有限公司 模型优化方法及装置、电子设备、存储介质、计算机程序、计算机程序产品

Similar Documents

Publication Publication Date Title
CN113505443B (zh) 一种任意外形的三维绕流问题自适应笛卡尔网格生成方法
Tachi Freeform variations of origami
CN108053484A (zh) 一种基于法向平均的常平均曲率曲面构建方法
du Pont Dune morphodynamics
CN109726433B (zh) 基于曲面边界条件的三维无粘低速绕流的数值模拟方法
Gao et al. Grid generation on free-form surface using guide line advancing and surface flattening method
Zou et al. A shock-fitting technique for cell-centered finite volume methods on unstructured dynamic meshes
CN110598331B (zh) 一种屋顶建模的方法和装置
CN103714575A (zh) 一种sph与动态表面网格相结合的流体仿真方法
CN104360896A (zh) 一种基于gpu集群的并行流体仿真加速方法
CN108986218A (zh) 一种基于pmvs的建筑物密集点云快速重建方法
Zhang et al. Adaptive hexahedral mesh generation based on local domain curvature and thickness using a modified grid-based method
CN103218852A (zh) 一种面向蒙皮动画的基于网格收缩的三维网格模型骨架提取系统及骨架提取方法
CN115618498B (zh) 一种飞行器跨流域流场的预测方法、装置、设备及介质
Miura et al. A comparison of grid quality of optimized spherical hexagonal–pentagonal geodesic grids
Shepherd et al. The case for subdivision surfaces in building design
Zhang et al. Adaptive generation of hexahedral element mesh using an improved grid-based method
CN109816789B (zh) 一种基于深度神经网络的三维模型参数化方法
CN101546351B (zh) 一种叶轮的变复杂度形状优化的几何参数化建模方法
CN106960469B (zh) 一种快速分割三角形的光滑自由变形方法
Akleman et al. Strip sculptures
CN111047684A (zh) 一种基于三维模型特征的模型简化方法
CN106097415A (zh) 一种2.5维绳索扭曲动画生成方法
CN101477707A (zh) 一种插值给定若干闭合曲线的曲面造型方法
Fuller et al. Improved method for the estimation of spacecraft free-molecular aerodynamic properties

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20180518

RJ01 Rejection of invention patent application after publication