gpt4 book ai didi

matlab - 如何切割现有的 3D 表面网格以使用对称性

转载 作者:太空宇宙 更新时间:2023-11-03 20:34:30 26 4
gpt4 key购买 nike

我目前正在研究一个结构力学问题,我需要切割现有的 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

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

提前致谢。 Desired symmetry

最佳答案

您可以首先使用这种伪算法定义网格和平面之间的交点

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

我想你可以在 stackoverflow 中找到每个步骤的解决方案

然后

关于matlab - 如何切割现有的 3D 表面网格以使用对称性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28551982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com