問題タブ [tetgen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
2089 参照

opengl - 複雑な3Dメッシュの三角形リストを動的に生成する

私のアプリケーションでは、ユーザー入力から取得した複雑な3Dソリッド(シリンダーブロックなど)の形状と寸法があります。そのための頂点とインデックスのバッファを構築する必要があります。

寸法はユーザー入力から取得されるため、Blenderまたは3DMaxを使用してモデルを手動で作成することはできません。そのようなメッシュを動的に生成するための教科書の方法は何ですか?

頂点、エッジ、穴を指定して三角形を生成するものを探しています。TetGenのようなものですが、TetGenには、ソリッド/メッシュの内部にある三角形を除外する方法がありません。

0 投票する
1 に答える
876 参照

c++ - LNK 2028 - 2019 / マネージおよびアンマネージ C++ ? (VS 2008)

オープンソース ライブラリを自分のプロジェクトの 1 つにリンクしようとしています。ライブラリはアンマネージド (Tetgen という名前) で、私のプロジェクトはマネージド C++ です。

私のプロジェクトはヘッダーを認識し、ヘッダーで定義された関数を使用できます。しかし、.cpp で定義されたいくつかのメソッドにアクセスしようとするたびに、2028 エラーが発生します。

エラー LNK2028: 未解決のトークン (0A000E20) "public: void __thiscall tetgenio::save_nodes(char const *)" (?save_nodes@tetgenio@@$$FQAEXPBD@Z) 関数で参照されている "public: virtual bool __thiscall ForwardModelingPlugin::CustomMeshVol3D: :tesselate(void)" (?tesselate@CustomMeshVol3D@ForwardModelingPlugin@@$$FUAE_NXZ)

テスト関数を作成しようとしました:

...そしてヘッダーで定義された別の Testbis 関数。Testbis は機能し、Test は 2028 エラーを返します。

プロジェクトの .obj と作成された .lib を比較しました。lib には次のものがあります。

しかし、.obj では次のようになります。

それらは同じではないようです。

すべて /clr でコンパイルされます。どちらの方法でも同じ結果で、.lib と .dll の両方を作成しようとしました。

0 投票する
2 に答える
1535 参照

visual-studio - 1つのプロジェクトで/clrおよびnoclrライブラリを使用する

1つのプロジェクトでいくつかの問題が発生しています。2つのライブラリを使用する必要がありますが、一方は/clrスイッチでコンパイルする必要があります。もう一方はこのスイッチではコンパイルできないためです。

1つのプロジェクトでこれら2つのライブラリを同時に使用する方法はありますか?現在、でコンパイルされて/clrおり、ライブラリとのリンクエラーが発生しましたnoclr

解決策がない場合でも、noclrライブラリをバッチモードで起動できますが、回避したいのですが...

私のプロジェクトはマネージC++であり、ライブラリtetgen(/ clrが必要)はネイティブC ++であり、このエラーが発生するため、/clrスイッチなしではコンパイルできません。

エラーC3381:'tetgenio':アセンブリアクセス指定子は、/clrオプションでコンパイルされたコードでのみ使用できます

もう1つのライブラリの三角形はCです。私はVisualStudio2008を使用しており、プロジェクトは32ビットでコンパイルされています。

0 投票する
1 に答える
674 参照

3d - この単純な3DジオメトリにTetGenを使用する方法

これが私の単純な3Dジオメトリを定義するポイントです。

次に、ファセットと頂点を準備します

次に、ボックスを使用した最も単純な例のドキュメントで説明されているのと同じ行でTetGenを使用します。

メッシュが生成されておらずTetGenGetPoints、頂点の再調整にも失敗していることがわかります。結果は非常に残念です。

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

なぜこの奇妙なことが起こっているのですか。TetGenのドキュメントも満足のいくものではありません。

0 投票する
1 に答える
489 参照

c++ - Code::Blocks の「コンパイル スイッチ」はどこにありますか?

ここで用語の問題があります。助けていただければとてもうれしいです。これが何を意味するのかわかりません。

tetgen Web サイトでは、Windows でtetgen ライブラリをコンパイルする手順は次のとおりです。

ライブラリを作成するには、次の最小限の手順を実行します。

  • という名前のWin32 スタティック ライブラリを作成しますlibrary
  • すべてのソース ファイルをこのプロジェクトに追加します。
  • シンボルTETLIBRARYを追加してスイッチをコンパイルします。
  • プロジェクトをビルドします。

私はこの声明を理解していません:

シンボルTETLIBRARYを追加してスイッチをコンパイルします。

その方法と、 「コンパイル スイッチ」の意味を教えてください。

0 投票する
1 に答える
145 参照

c++ - TetGen のデフォルトの動作を変更する

TetGen ライブラリを利用して点集合の凸包を見つけるコードを書いています。ただし、デフォルトでは

凸包3D Delaunay 四面体化の両方を生成します。Mathematica には Tetgen の実用的な実装とそれに対応する関数TetGenConvexHull[]があるため、凸包のみを取得することは可能であると信じる傾向がありますが、tetgen.cxxソースコードとドキュメントを調べた後、方法を見つけることができないようです.

凸包のみを取得するように TetGen のデフォルトの動作を変更するにはどうすればよいですか?

0 投票する
1 に答える
852 参照

3d - 3D Delaunay Tessallation からの 3D ボロノイ図の作成

3D Delaunay Tessallation ( TetGen で生成) をボロノイ図に変換しようとしています。TetGen がボロノイ図を作成できることは知っていますが、異常な境界条件のため、自分で変換を実行する必要があります。

私はここで二面性に完全に困惑しています。私は4つのうち2つを持っています:

  1. 各 Delaunay 頂点は、1 つのボロノイ セルに対応します (セルの中心は頂点にあります)。
  2. 各 Delaunay 四面体は、1 つのボロノイ頂点に対応します (四面体の中心は頂点にあります)。

Delaunay の各面が 1 つのボロノイ エッジに対応することはわかっており、面の頂点はありますが、そこからボロノイ エッジを取得するにはどうすればよいでしょうか。

また、各 Delaunay エッジは 1 つのボロノイ面に対応しますが、エッジに対応する面を見つけるにはどうすればよいでしょうか?

0 投票する
1 に答える
1417 参照

python - tetgen または三角形 (またはメッシュピー) を使用して中空ドームを作成する

tetgen を使用して、中空のドームを作成しようとしています。私は三角形を使用していて、円を三角測量し、方程式 z = sqrt(abs(r^2 - x^2 - y^2)) に従って z 値を上げるだけでしたが、端の近くで非常に悪いストレッチをしていました。

したがって、このドームの多数のポイントを生成し、それを埋めずにメッシュ化したいと思います。基本的に、Tetgen は .node および .faces ファイルを提供することでこれを実行しますが、問題はまだ底を取得していることです。そして、それを取り除く方法がわかりません。私は tetgen と meshpy にかなり慣れていないので、誰かがこれのワークフローを教えてくれたら、とてもありがたいです。答えは実はとても簡単かもしれません。

たとえば、単純な関数を使用して、円の下部にポイントを作成できます。

次に、次の関数を使用して、ドーム上にランダム ポイントを生成します。

次に、単純に .node ファイルからヘッダーを平手打ちし、tetgen を実行して .face ファイルを取得します。このアプローチの唯一の問題は、オープンドームにする必要があるときに底がそこにあることです.

私はむしろmeshpyを使用したいと思いますが、これらのポイントを生成してからmeshpyにフィードすると、何も返されません...

print np.array(mesh.facets) と print np.array(mesh.points) は空の配列になりました。

すべてのファセットも設定せずにmeshpyを使用する方法、またはこのビルド方法を使用してコマンドラインtetgenのようにファセットを構築する方法について誰かアイデアがありますか? これは、ドームの底が開いていないという私の問題を実際に取り除くわけではありませんが、私が解決しようとしてきたことです. どんな助けでも大歓迎です。ありがとう!

0 投票する
1 に答える
830 参照

c++ - C++ で TetGen を使用してメッシュ ファイルをロードする

C++ で TetGen ライブラリを使用してメッシュ ファイルをロードしたいのですが、拘束された Delaunayメッシュを表示するためにコード内で有効にする正しい手順やスイッチがわかりません。

デフォルトの動作で(rocq.inria.frから)恐竜メッシュの基本的なロードを試しました:

形状は次のようになっているはずです。

ここに画像の説明を入力

TetViewを使用すると、完全に機能します。しかし、私のコードでは、次の結果が得られました。

恐竜メッシュ結果

Delaunay ConstraintのPiecewise Linear Complex (plc)プロパティをアクティブにしようとしました。

メッシュからいくつかのパーツを取得しました。

恐竜メッシュからさらにいくつかのパーツ

もっとパーツがあるのか​​もしれませんが、入手方法がわかりません。

0 投票する
1 に答える
238 参照

c++ - Tetgen: サーフェスの指定された三角形から開始して、サーフェスの接続性を変更せずに新しいメッシュを作成します

tetgen を使用していますが、問題があります。サーフェスの指定された三角形から開始して、メッシュを作成したいと思います。指定された三角形を変更したくありません。特に、私は次のようなドメインに取り組んでいます。内部に穴のある外部の立方体のボックス (ボックスも) があります。私が持っている三角形は、内面と外面のものです。2 つのサーフェス間にメッシュを構築したいと考えています。残念ながら、私は成功していません。

私が使用する入力は次のタイプです。

  • ノード数、3、0、1 (領域なし、マーカーあり)

-ノードのリスト

  • ファセット数、1 (マーカー)

-ファセットのリスト

  • 1(1穴)

-穴の座標

  • 0 (リージョンなし)

ファセットのリストは、内部と外部の両方のサーフェスの三角形のリストです。この種のドメインの最も単純なメッシュを検討しました。そして、私がtetgenに与える入力は「正しい」と確信しています。私はそれをmatlabに表示しましたが、それは私が望むものと一致しています。おそらく、私が望むものは tetgen が望むものではありません... それにもかかわらず、tetgen は交差していない交差三角形を見つけます。彼らは側面を共有していますが、ファセットは側面を共有できると思います! または私は間違っていますか?それとも、いくつかの三角形が同一平面上にあるという事実ですか? 概念的に言えば、私の入力に何か問題があると思いますが、何がわかりません。

tetgen を呼び出すときは、表面の変化を避けるために「-Y」スイッチを使用します。-p スイッチと -q スイッチの両方を別々にまたは一緒に試しました。しかし、常に同じエラーが発生します。誰か助けてくれませんか?

どうもありがとうございました。