三角网格数值仿真平滑化的方法与流程

文档序号:35931252发布日期:2023-11-05 05:27阅读:74来源:国知局
三角网格数值仿真平滑化的方法与流程

本发明涉及计算机图形处理领域,具体涉及一种三角网格数值仿真平滑化的方法。


背景技术:

1、在工业数值仿真领域进行数值仿真的流程中,除了对仿真关键数值的检查,通常还需要直观的显示出数值的分布和变化。数值显示的合理性和准确性在结果检验中十分重要,特别在比较精细的模型中的显示(例如过孔)中的数值变化的准确性会比较敏感。

2、在有限元算法中, node(节点)作为解算的基本单位,多个node(节点)构成一个element(单元),单元其本身附带一些属性。此处的节点即为本技术中的顶点。在有限元分析中,整个物体被划分为多个单元,通过对每个单元进行离散化和适当地处理,可以近似地描述物体的行为,并进行数值求解。在后处理中,用户需要看到单元的某个属性,但在数据显示中经常会遇到两个问题:

3、1) 如图2所示,单元在单位区域内的属性是固定数值的,所以在正常显示中数据不平滑,无法合理的显示出数据变化的情况。

4、2) 传统的针对单元数值的数据平滑算法将单元上的数据传播到节点上,随后直接采用三角形重心插值法来产生平滑过度,但在这个传播过程中会使得数据极大值极小值失真,导致用户看到的数据不符合原始数据。


技术实现思路

1、本发明的目的在于解决现有后处理结果视图在对单元数值平滑过程中产生的数据失真问题。

2、为了实现上述目的,本发明提出了一种三角网格数值仿真平滑化的方法,包括:

3、步骤1,将三维结构转化为二维的第一三角网格;

4、步骤2,构建第一三角网格的拓扑,所述拓扑包括第一三角网格中所有顶点、边和三角形的信息数据,所述信息数据包括:所有顶点、边和三角形的属性值,所有顶、边和三角形之间的邻接关系;

5、步骤3,根据所构建的拓扑检测出每个顶点相邻的所有三角形,根据拓扑中的信息数据计算与每个顶点相邻的所有三角形的平均值,将计算所得的平均值分配给相应的顶点,得到第二三角网格;

6、步骤4,通过递归地方式执行预设的网格转换算法,在第二三角网格中插入每个三角形的重心作为新增的顶点,并利用新增的顶点和第二三角网格中的顶点重新剖分三角形,以形成第三三角网格;

7、步骤5,将第三三角网格栅格化。

8、在一个实施例中,所述步骤1包括:

9、步骤11,将三维结构分割成若干个离散的三维单元;

10、步骤12,创建一个二维参考平面;

11、步骤13,将所创建的二维参考平面与每个三维单元相交,得到若干个由三维单元和二维参考平面的交点围合而成的多边形,多边形的数量与三维单元的数量相等;

12、步骤14,将每个多边形剖分为若干个三角形以形成子三角网格,所有子三角网格形成所述第一三角网格。

13、在一个实施例中,记二维参考平面的法向量为 n,在二维参考平面上定义一对互相垂直单位向量 a 和 b;

14、所述步骤13中,一个三维单元与二维参考平面相交以得到一个多边形的步骤,包括:

15、将三维单元的每条边和二维参考平面投影到na平面和nb平面上,在na平面上,找到三维单元的每条边与二维参考平面的第一交点的集合a,在nb平面上,找到三维单元的每条边与二维参考平面的第二交点的集合b;

16、将集合 a 和集合 b 中所有的第一交点和第二交点投影回二维参考平面,并按照极角排序连接,以形成一个多边形。

17、在一个实施例中,所述步骤14包括:若多边形有三条边,则直接作为一个子三角网格,若多边形有至少四条边,则将多边形剖分成多个三角形以构建一个子三角网格。

18、在一个实施例中,所述步骤14中,若多边形有四条边,则沿最短对角线将多边形切分为两个三角形。

19、在一个实施例中,所述步骤1中:

20、若三维单元为三棱柱,二维参考平面平行于三棱柱的顶部或底部,三棱柱顶部或底部的三角形作为一个子三角网格;

21、若三维单元为六面体,二维参考平面平行于六面体的顶部或底部,将六面体顶部或底部的四边形沿最短的对角线切分为两个三角形作为一个子三角网格;

22、若三维单元为四面体,则记二维参考平面的法向量为 n,在二维参考平面上定义一对互相垂直单位向量 a 和 b,将三维单元的每条边和二维参考平面投影到na平面和nb平面上,在na平面上,找到三维模型的每条边与二维参考平面的第一交点的集合a,在nb平面上,找到三维模型的每条边与二维参考平面的第二交点的集合b,将集合 a 和集合 b 中所有的第一交点和第二交点投影回二维参考平面,并按照极角排序连接,以形成一个多边形,若多边形为三角形,则作为一个子三角网格,若多边形为四边形,则沿最短对角线将四边形剖分成两个三角形作为一个子三角网格。

23、在一个实施例中,所述步骤2中构建第一三角网格的拓扑,包括:

24、构建顶点表,插入第一三角网格中所有顶点;

25、构建面表,插入第一三角网格中所有三角形,并在顶点表中创建一个引用,所述引用将每个顶点与每个顶点相邻的所有三角形关联;

26、构建边表,插入第一三角网格中所有边,并将每条边与每条边相邻的所有三角形的关联。

27、在一个实施例中,所述在顶点表中创建一个引用包括:为每个顶点添加一个指针或索引。

28、在一个实施例中,所述步骤4中预设的网格转换算法包括:

29、步骤41,读取当前三角形为第一三角形,第一三角形包括三个顶点和三条边,第一三角形的三个顶点为第一顶点、第二顶点和第三顶点,其中第一顶点和第二顶点之间的为第一边,第二顶点和第三顶点之间的为第二边,第一顶点和第三顶点之间的为第三边,读取与第一边相邻的第二三角形,与第二边相邻的第三三角形及与第三边相邻的第四三角形;

30、步骤42,插入补充结构:所述补充结构包括四个顶点和九条边,所述四个顶点分别为:第一三角形、第二三角形、第三三角形和第四三角形的重心,所述九条边包括:第一三角形的重心分别与第一顶点、第二顶点和第三顶点连接而成的三条边,第二三角形的重心分别与第一顶点和第二顶点连接而成的两条边,第三三角形的重心分别与第二顶点和第三顶点连接而成的两条边,以及第四三角形的重心分别与第一顶点和第三顶点连接而成的两条边;

31、步骤43,消除三角形的公共边:所述公共边为第一三角形的三条边;

32、步骤44,将步骤43中产生的六个四边形分别剖分成两个三角形:先将第一三角形的重心所相邻的三个四边形分别剖分成两个三角形,再返回步骤42通过递归的方式对剩余三个四边形进行处理。

33、在一个实施例中,所述步骤44后,还包括:

34、步骤45,对未读取过的三角形循环步骤41和步骤44,以递归地方式执行网格转换算法,直至对每个三角形执行完网格转换算法,以将第二三角网格转换为第三三角网格。

35、在一个实施例中,步骤44中四边形剖分成两个三角形的方法为:

36、沿四边形最短对角线将四边形剖分成两个三角形;

37、或计算角线顶点值差异因子,沿最大差异因子对角线将四边形剖分成两个三角形。

38、在一个实施例中,所述步骤4包括:

39、步骤41,读取当前三角形为第一三角形,第一三角形包括:第一顶点、第二顶点、第三顶点、第一顶点和第二顶点连接而成的第一边、第二顶点和第三顶点连接而成的第二边、第一顶点和第三顶点连接而成的第三边,读取与第一三角形的第一边相邻的第二三角形;

40、步骤42,插入补充结构:将第一三角形及第二三角形的重心分别作为第四顶点和第五顶点插入第二三角网格中,第一顶点和第四顶点连接、第四顶点和第二顶点连接、第二顶点和第五顶点连接、第五顶点和第一顶点连接分别作为第四边、第五边、第六边和第七边插入第二三角网格中;

41、步骤43,连接第四顶点和第五顶点作为第八边,获得由第四边、第七边和第八边围成的第三三角形,第五边、第六边和第八边围成的第四三角形;

42、步骤44,存储第三三角形和第四三角形;

43、步骤45,返回步骤41,通过递归的方式将当前三角形相邻的三角形作为当前三角形,循环步骤41和步骤44,直至对每个三角形执行完网格转化算法,以将第二三角网格转换为第三三角网格。

44、在一个实施例中,所述步骤5中,栅格化为将第三三角网格处理成能被显示设备绘制的图像。

45、本发明一实施例的三角网格数值仿真平滑化的方法的有益效果在于:如图2和图13所示,经过本发明一实施例的三角网格数值仿真平滑化的方法的处理后,结果显示更符合求解的实际场景,有效地解决了结果显示合理化、准确化的两个难题。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1