2011-11-21 32 views
6

Estoy tratando de hacer una malla cuadrilateral a partir de una malla de superficie (que es principalmente triangular) generada por Mathematica. No estoy buscando un mesher de alta calidad, sino un algoritmo de trabajo simple. Yo uso GMSH por hacerlo externamente. Podemos utilizar las capacidades de importación de CAD de Mathematic para generar geometrías 3D que sean entendidas por el núcleo de Mathematica.Generando malla cuadrilátera desde la malla de superficie de Mathematica

Podemos ver los objetos importados Geometry3D y las tramas de número de lados en cada polígono en el que se encuentran. Se vuelve visible que los polígonos que forman la malla no son siempre triángulos.

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,[email protected]}]; 
GraphicsGrid[Partition[AllPic,2],Spacings-> {0,0}] 

enter image description here

Ahora lo que estoy buscando es un algoritmo para formar una malla de forma cuadrangular de esa información a disposición de los polígonos de MMA. Cualquier solución fácil es muy bienvenida. Me refiero a la solución fácil, que no va a funcionar en un entorno muy general (donde la malla se compone de polígonos con lados superiores a 5 o 6) y que puede ser bastante ineficiente en comparación con el software comercial. Pero uno puede ver que no hay muchos generadores de malla de superficie cuadrilátera disponibles, aparte de algunos costosos comerciales.

BR

+2

¿Estás buscando un malla completa (hexahedra/ladrillos) o una malla de superficie (quads)? Cómo desea tratar con triángulos que se ven así: Graphics3D [ GraphicsComplex [{{0, 0, 0.5}, {1, 0, 0}, {1, 1, 0}, {0, 1, 0} }, Polígono [{{1, 2, 3}, {3, 4, 1}}]]] - seguramente necesitarías una prueba normal. Y qué hacer con los triángulos que se cruzan, como se muestra en la parte inferior de http://reference.wolfram.com/mathematica/TetGenLink/tutorial/UsingTetGenLink.html. El "SpaceShuttle" es hermético ... ¿Podrías subir una imagen de un resultado hecho con GMSH de, digamos, la vaca? –

+0

Si desea la superficie cuádruple, el algoritmo qmorph podría ser una base: pages.cs.wisc.edu/~csverma/CS899_09/qmorph.pdf –

+0

¿Está considerando soluciones como eliminar el lado compartido de un conjunto de dos triángulos? –

Respuesta

0

esto producirá quads independientemente de la topología de entrada:

  • insertar un vértice en el centro de cada cara
  • insertar un vértice en el punto medio de cada borde
  • inserto bordes que conectan el vértice central de cada cara con los vértices del punto medio de los bordes
Cuestiones relacionadas