【问题标题】:Generating quadrilateral mesh from Mathematica surface mesh从 Mathematica 表面网格生成四边形网格
【发布时间】:2012-01-03 05:08:44
【问题描述】:

我正在尝试从 Mathematica 生成的表面网格(主要是三角形)制作四边形网格。我不是在寻找高质量的网格器,而是在寻找一个简单的算法。我使用GMSH 在外部进行。我们可以利用 Mathematic 的 CAD 导入功能来生成 Mathematica 内核可以理解的 3D 几何图形。

我们可以看到导入的Geometry3D 对象以及它们所包含的每个多边形的边数图。可以看出,构成网格的多边形并不总是三角形。

Name3D=RandomChoice[ExampleData["Geometry3D"][[All,2]],6];
AllPic=
  Table[
  Vertex=ExampleData[{"Geometry3D",Name3D[[i]]},"VertexData"];
  Polygons=ExampleData[{"Geometry3D",Name3D[[i]]},"PolygonData"];
  GraphicsGrid[
  {{ListPlot[#,Frame-> True,PlotLabel->Name3D[[i]] ]&@(Length[#]&/@Polygons),
  Graphics3D[GraphicsComplex[Vertex,Polygon[Polygons]],Boxed-> False]}}
  ,ImageSize-> 300,Spacings-> {0,0}],
  {i,1,Length@Name3D}];
GraphicsGrid[Partition[AllPic,2],Spacings-> {0,0}]

现在我正在寻找一种算法,可以根据 MMA 可用的多边形信息形成四边形网格。任何简单的解决方案都非常受欢迎。通过简单的解决方案,我的意思是在非常一般的环境中(其中网格由边数超过 5 或 6 的多边形构成),并且与商业软件相比可能效率很低。但是可以看出,除了一些昂贵的商业网格生成器之外,可用的四边形曲面网格生成器并不多。

BR

【问题讨论】:

  • 您在寻找全网格(六面体/砖块)还是表面网格(四边形)?您想如何处理如下所示的三角形: Graphics3D[ GraphicsComplex[{{0, 0, 0.5}, {1, 0, 0}, {1, 1, 0}, {0, 1, 0}} , Polygon[{{1, 2, 3}, {3, 4, 1}}]]] - 可能你需要一个正常的测试。以及如何处理reference.wolfram.com/mathematica/TetGenLink/tutorial/… 底部所示的相交三角形。 “航天飞机”是水密的。你能上传一张用 GMSH 完成的结果图片,比如牛吗?
  • 如果你想要四边形曲面,qmorph 算法可以作为基础:pages.cs.wisc.edu/~csverma/CS899_09/qmorph.pdf
  • 您是否正在考虑解决方案,例如从两个三角形集合中删除共享边?
  • @belisarius 是的,这是最粗暴的方法之一。正如 ruebenko 指出的那样,qmorph 是一种众所周知的算法,需要在 MMA 中进行大量工作。我想要一些简单的东西,就像你说的。一旦我有一个更好的奶牛示例以及如何使用 GMSH 生成四边形网格,我将更新这个问题。我需要一点时间,因为我目前正忙于其他事情。我希望你觉得这个问题很有趣。
  • 出于好奇,你打算用网格做什么?

标签: algorithm wolfram-mathematica geometry mesh


【解决方案1】:

无论输入拓扑如何,这都会产生四边形:

  • 在每个面的中心插入一个顶点
  • 在每条边的中点插入一个顶点
  • 插入连接每个面的中心顶点与其边的中点顶点的边

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-25
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多