关于BSpline的问题

时间:2011-09-14 10:26:35

标签: geometry wolfram-mathematica mesh cad

这是一个带有3D点群的data file。现在我们可以形成一个BSpline表面。

dat=Import["C:\\Users\\Andy\\Desktop\\Foil.mat"];
surface=BSplineFunction[dat];
ParametricPlot3D[surface[x,y], {x, 0, 1}, {y, 0, 1},
                MaxRecursion->4,Axes->None,Mesh->All,Boxed->False]

现在我们可以看到结构了。但问题是我想制作一个3D实体,这个结构实际上有两个可见的洞。

enter image description here

在下一张图片中,我们可以看到两个角都是开放的,结构不是实心的,但实际上是空心的。

enter image description here

所以我提出了一个解决方案,我相信它可以直观地工作,但不会返回坚固的结构。

pic=Show[Graphics3D[
       {Polygon[Table[surface[0,y],{y,0,1,0.005}]],
        Polygon[Table[surface[1,y],{y,0,1,.005}]]}],
        ParametricPlot3D[surface[x,y],{x,0,1},{y,0,1},
           MaxRecursion-> 4,PlotPoints-> 20,
           Mesh-> All],Boxed->False,Axes-> None];

GraphicsGrid [          {{ParametricPlot3D [表面[X,Y],{X,0,1},{Y,0,1},                            PlotPoints-> 20,Mesh->所有,Boxed->假,Axes->没有],            Graphics3D的[{多边形[表[表面[0,Y],{Y,0,1,0.005}]]                        多边形[表[表面[1,Y],{Y,0,1,0.005}]]}],           PIC}}]

这是输出。 enter image description here

现在我们将可视化关闭孔的第三张图片导出为* .obj文件。我们可以在任何基于CAD的网格编辑器中导入该文件,如Meshlab。可以看到要检测的孔。

enter image description here

现在有一种简单的方法,以便我们可以在Mathematica中使用 Foil.mat 文件中的给定数据点形成一个实体结构。我希望在BSpline函数中可以使用一些选项来实现此目的。正如人们所料,我想要一个没有孔的封闭表面。

希望我能够明确地解释我的问题。将等待你的回复。

BR

1 个答案:

答案 0 :(得分:4)

您可能想要探索Mathematica中的“隐藏功能”TetGenLink

TetGen is a quality tetrahedral mesh generator and a three-dimensional 
Delaunay triangulator.   
TetGenLink is a Mathematica application that uses Wolfram Library Link  
to link to TetGen functions. It is used automatically by Mathematica for  
various operations such as interpolation in three-dimensional convex domains.  
However, it can also be used directly where it gives a flexible and innovative  
way to use the functionality of TetGen.

来自帮助的图片:

enter image description here