5

これは、3D ポイントのクラスターを含むデータ ファイルです。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 つの目に見える穴があります。

ここに画像の説明を入力

次の写真では、両方の角が開いていて、構造が中実ではなく、実際に空洞になっていることがわかります。

ここに画像の説明を入力

だから私は、視覚的にはうまくいくと確信しているが、しっかりした構造を返さない解決策を思いついた。

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[surface[x,y],{x,0,1},{y,0,1}, PlotPoints-> 20,Mesh-> All,Boxed->False,Axes-> None], Graphics3D[{Polygon[Table[surface[0,y],{y,0,1,0.005}]], Polygon[Table[surface[1,y],{y,0,1,.005}]]} ]、写真}}]

ここに出力があります。 ここに画像の説明を入力

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

ここに画像の説明を入力

これで、 Foil.matファイル内の指定されたデータ ポイントを使用して Mathematica でソリッド構造を形成できる簡単な方法ができました。BSplineこれを実現するために、関数でいくつかのオプションを使用できると思います。期待できるように、穴のない閉じた表面が必要です。

私の問題を十分に明確に説明できたことを願っています。お返事お待ちしております。

ブラジル

4

1 に答える 1

4

TetGenLinkMathematicaの「隠された機能」を探求したいかもしれません。

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.

ヘルプからの画像:

ここに画像の説明を入力してください

于 2011-09-14T12:06:57.280 に答える