三角形で構成されたサーフェスを持つ3Dクローズドメッシュカーオブジェクトがあります。その体積、体積の中心、慣性テンソルを計算したいと思います。
私たちを手伝ってくれますか
よろしく。ジョージ
ボリュームに…
三角形のファセットごとに、そのコーナー ポイントを検索します。P、Q、Rと呼んでください。
この量を計算します (私はこれを「部分体積」と呼んでいます)
pv = PxQyRz + PyQzRx + PzQxRy - PxQzRy - PyQxRz - PzQyRx
これらをすべての面について合計し、6 で割ります。
重要!各ファセットの P、Q、R は、外側から見て時計回りに配置する必要があります。(または、すべてのファセットで一貫している限り、すべて反時計回りです。)
メッシュに四角形がある場合は、1 対の対角線を結ぶ対角線を一時的に幻覚させるだけです。これで三角形が2つになります。
実用的な計算上の改善: P、Q、および R で計算を行う前に、「中心」点 C の座標を減算します。これは、重心、最小/最大 x、y、z の間の中点、または任意の便利な点です。メッシュの内側または近く。これにより、より正確なボリュームの切り捨てエラーを最小限に抑えることができます。
数値的な観点からは、達成しようとしていることは非常に単純であり、いくつかの求積を計算するだけで済みます。ウィキペディアは、その背後にある数学に関する必要な情報を提供します。
すぐに使用できるボリューム計算を探している場合は、このエントリをご覧ください。慣性として -- 質量の分散も必要なため、形状だけでは不十分です。
車を大量の液体に沈めると、押しのけられた液体が車と同じ体積になることを発見したのはアルキメデスだと思います。
ただし、この場合にこれがどのように役立つかはわかりません。バックグラウンドで液体シミュレーションを実行し、メッシュをその中に沈めることは、少しやり過ぎに思えます。ただし、それはうまくいくと思うので、(それでも少し役に立たない)答えとしての資格があります。;^)
さて、ここで提供されている車に関する情報はあまりありません。車をより単純な形状に分解できるはずです。必要な近似度が高いほど、より単純な形状に分解できます。(車が何らかの形で動的に生成され、毎回完全に異なる場合、これは困難になる可能性があります...しかし、その状況が意味をなさないとは思いません)。
これは、さまざまな単純な形状の慣性テンソルを見つけるのに役立つはずです: http://www.gamedev.net/community/forums/topic.asp?topic_id=57001、球体や立方体などのボリュームや同類のものを見つけることはかなり一般的です知識があるので、わざわざリンクしません。