1

Geometry オブジェクトを一連のより単純な形状に分割し、次の式を使用してそれらの重心を結合する必要があることを計画して

ます。

注:数学に対する私の見方が間違っていても驚かないでください。私は三角法以外の複雑な計算をしたことはありませんし、ギリシャ文字を扱う必要もありませんでした。これでよくわかると思いますが、間違っていたら教えてください。

情報メモ: ゴメトリック形状またはプリズムの重心は、形状のちょうど中央ではありません。それは重心、または質量の中心です。Geometry オブジェクトは 3D プリズムもカプセル化できると想定しているため、将来これを考慮する必要があるかもしれませんが、今のところ 2D ジオメトリのみに焦点を当てています。2D 形状の場合、それが特定の形状の硬い紙切れであると想像する必要があります。重心は、この紙切れが針の上でバランスをとるポイントになります。

私が直面した最初の問題は、この式が正しく機能するように、特定の Geometry オブジェクトを十分に単純な形状に正確に分割する方法を見つける必要があるということです。これをどのように達成できるか、誰にもアイデアがありますか? それとも、まだ普遍的に機能するより良い手順はありますか?

私が直面している 2 番目の問題は、ジオメトリが分割された後、各ピースの重心を見つけるにはどうすればよいかということです。単純な形状の各タイプ (三角形、四角形、半円など) には、独自の重心式があります。各ピースがどのタイプの形状であるかを把握する方法はありますか?

4

2 に答える 2

3

任意の 2D 平面形状のテッセレーションまたは離散化は、有限要素解析における一般的な問題です。通常、平面三角形または四角形で行われます。「2d 有限要素メッシュ生成」または quadtree または octree メッシュ生成で Google 検索を試してください。各単純な形状の重心を計算し、引用した (正しい) 式を適用できます。

このようなもの。またはこれら。もちろん、問題のボディの生のジオメトリを提供する必要があります。

あなたはまだ鍬に長い列を持っています. 次のすべてを行う必要があります。

  1. 自動メッシュ プログラムを見つけて、2D 形状のジオメトリを入力する方法を学びます。
  2. 自動メッシャーを実行し、空間内のすべての 2D ポイントと、すべての三角形要素と四角形要素の接続性で構成されるメッシュ出力を取得します。
  3. メッシュを読み取り、各要素の面積と重心を計算するプログラムを作成します。
  4. これらの値を引用した式に代入して、元の 2D 形状の重心を計算します。これは、すべての要素をループして、各要素の重心の (x,y) 座標とその面積の積である面積を累積することを意味します。
  5. 答えが得られたら、収束を確認する必要があります。これを行うには、要素を小さくして再計算することでメッシュを改良します。メッシュをリファインすると、収束したことがわかり、答えの変化がわずかな許容値 (5% または許容できる範囲) 未満であることがわかります。

それはまだかなりの量の仕事です。

更新:これは非常に良さそうで、オープン ソースです。

于 2009-08-25T01:21:40.440 に答える
0

このためのコードはありませんが、形状がテッセレートされた場所 (この場合はpolygon triangulationを使用) を見たので、素敵な三角形のセットが得られます。次に、三角形の重心の加重平均に基づいて、結合された重心を計算します。

編集:

Insight3D by AGIという製品に取り組んでいる人たちによるブログがあります。このエントリでは、三角測量について話しています。彼らはアルゴリズムに関するいくつかの指針を提供するので、それを行うのに役立つかもしれません. 用途によっては、それらの実装の1 つを再利用できる場合があります。開発および非営利目的での使用は無料です。

于 2009-08-24T21:02:51.060 に答える