2011-09-14 14 views
4

ここには3Dポイントのクラスタを持つdata fileがあります。今度はそれからBSplineの表面を形成することができます。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ソリッドを作りたいということです。この構造は実際には2つの目に見える穴があります。次の画像で

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- [表[表面[0、y]、{y、0,1,0.005}]、 ポリゴン[表[面[1、y]、{y 、0,1、.005}]}]、 pic}}

ここで出力されます。 enter image description here

ここで、穴が視覚的に* .objファイルとして閉じられている3番目の画像を書き出します。 MeshlabのようなCADベースのメッシュエディタでそのファイルをインポートできます。そこには、検出される穴が見えます。今

enter image description here

我々はFoil.matファイル内の指定されたデータポイントをMathematicaで固体構造を形成することができるように簡単な方法があります。私はいくつかのオプションがこれを達成するためにBSpline関数で利用可能であると期待しています。私は穴がない閉じた表面を望むことが期待できる。

希望私は私の問題を明示的に十分に説明することができました。あなたの返信を待ちます。

BR

答えて

4

あなたはTetGenLink、Mathematicaで "隠し機能" を探求することをお勧めします。ヘルプから

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

+1

が、これは秘密にしておくことになっていないでしたか? –

+1

文書化されていない別のコミュニティwikiの時間が好きです:) – Verbeia

+1

@Verbeia奇妙なことに、それは文書化されています(ヘルプ検索ダイアログで 'TetGenLink/tutorial/Overview'と入力してください)。問題は、ドキュメントが他のヘルプページによって統合/リンクされていないことです。 –