繁体   English   中英

如何剪切现有的3D曲面网格以使用对称性

[英]How to cut existing 3D Surface Mesh in order to use symmetry

我目前正在研究结构力学问题,我需要切割现有的3D表面网格,以便在MATLAB或GMSH中使用对称性。

第一次尝试:我通过首先删除负x轴上的所有节点来获得对称性; 然后使用delaunayTri()来获得3D四面体网格。 之后,我使用freeboundry() matlab函数来获取表面网格。 使用这种方法,一些节点被忽略,因此我失去了实际的几何形状(即3d中的双凹形状)和对称性。

第二次尝试:我通过首先删除负x轴上的所有节点来获得对称性; 然后在文件交换中使用AlphaHull() matlab函数,该函数使用alpha形状算法。 在这里,我必须定义一个名为alpha radius的标量参数,其值会影响曲面网格的质量,但没有明确定义的范围,因此我不能自动化更大的网格; 更重要的是,在3D表面网格内部产生了一些残余表面或四面体网格。

附件是3个文件(在一个zip文件中):

  1. 原始GMSH文件;
  2. 提取的节点坐标和
  3. 从GMSH文件中提取的元素连接数组(txt格式)。

https://www.dropbox.com/s/7xwkyvqy13k5o33/get_symmetry.zip?dl=0

注意:我不希望在新的对称性中添加额外的节点,因为当前节点坐标和连接在我的计算中非常重要, 但如果是强制的,可能会引入额外的节点。 不过,我会感谢任何协助和/或建议。

先感谢您。 期望的对称性

您可以使用此peuso算法首先定义网格和平面之间的交集

  1. 定义网格的egde矩阵(例如,行由构成边的节点索引组成)
  2. 计算网格和平面的每个节点之间的有符号距离
  3. 找到一个正距离和一个负距离的egde
  4. 计算边和平面之间的交叉点以创建新节点
  5. 找到具有交叉边和三角形的三角形(通常情况下,您需要创建三个三角形)
  6. 删除节点不在平面右侧的所有三角形

我认为你可以在stackoverflow中找到每个步骤的slution

然后

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM