从Mathematica曲面网格生成四边形网格

时间:2011-11-21 17:58:26

标签: algorithm wolfram-mathematica geometry mesh

我试图用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}]

enter image description here

现在我要找的是一种算法,用于根据MMA可用的多边形信息形成四边形网格。任何简单的解决方案都非常受欢迎。通过简单的解决方案,我的意思是,它不能在非常一般的环境中工作(网格构成边长超过5或6的多边形),与商业软件相比可能效率很低。但可以看出,除了少数昂贵的商用网格之外,没有太多的四边形表面网格生成器可供使用。

BR

1 个答案:

答案 0 :(得分:0)

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

  • 在每张脸的中心插入一个顶点
  • 在每条边的中点插入一个顶点
  • 插入连接每个面的中心顶点的边缘及其边缘的中点顶点