首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何切割现有的三维曲面网格以利用对称性

如何切割现有的三维曲面网格以利用对称性
EN

Stack Overflow用户
提问于 2015-02-16 23:12:26
回答 1查看 1.5K关注 0票数 3

我目前正在研究一个结构力学问题,为了在MATLAB或GMSH中使用对称性,我需要切割现有的三维曲面网格。

第一次尝试:I首先删除负x轴上的所有节点,然后用delaunayTri()得到三维四面体网格。在此基础上,利用freeboundry() matlab函数进行曲面网格划分。使用这种方法,一些节点被忽略了,因此我失去了实际的几何形状(即3D中的双凹形状)和对称性。

第二次尝试:I首先删除负x轴上的所有节点,然后从文件交换中使用AlphaHull() matlab函数,该函数采用α形状算法。在这里,我必须定义一个称为α半径的标量参数,它的值影响到曲面网格的质量,但没有定义得很好的范围,因此我无法对较大的网格进行自动化;更重要的是,在生成的三维曲面网格中存在一些残余曲面或四面体网格。

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

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

symmetry.zip?dl=0

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

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2015-06-16 20:42:41

首先,您可以使用这个peuso算法定义网格和平面之间的交点。

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

我认为您可以在堆栈溢出中找到这些步骤中的每个步骤。

然后

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28551982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档