Создание четырехугольной сетки из поверхностной сетки Mathematica - PullRequest
6 голосов
/ 21 ноября 2011

Я пытаюсь сделать четырехугольную сетку из поверхностной сетки (которая в основном треугольная), сгенерированной Mathematica.Я не ищу высококачественный меш, а просто алгоритм обхода.Я использую GMSH для внешней работы.Мы можем использовать возможности импорта Mathematic в САПР для создания трехмерных геометрий, понятных ядру Mathematica.

Мы можем видеть импортированные объекты 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

Теперь я ищу алгоритм формирования четырехугольной сетки из этого многоугольника.информация доступна для ММА.Любое простое решение приветствуется.Под простым решением я подразумеваю, что не будет работать в очень общих условиях (где сетка состоит из многоугольников со сторонами более 5 или 6) и которая может быть довольно неэффективной по сравнению с коммерческим программным обеспечением.Но можно видеть, что не так много доступных четырехугольных поверхностных генераторов сетки, кроме нескольких дорогих коммерческих.

BR

1 Ответ

0 голосов
/ 13 июня 2012

это даст квадраты независимо от входной топологии:

  • вставьте одну вершину в центр каждой грани
  • вставить одну вершину в средней точке каждого ребра
  • вставить ребра, соединяющие центральную вершину каждой грани с серединами ее ребер
...