モデルの体積を計算する

モデルの体積の求め方についてです。

モデルの体積がわかって何に役に立つのだという疑問もあるのですが、単に好奇心で知りたくなったので調べてみました。モデルを三角錐に分割して考えれば体積が求まります。

volume_01

スカラー三重積で3つのベクトルの成す平行六面体の体積を求めることができます。二つのベクトルの外積を求めると、そのベクトルの成す平行四辺形の面積になります。これを底面積としてもうひとつのベクトルとの内積を求めると、ちょうど高さを掛けることと一致するので、体積が求まることになります。

volume_02

平行六面体のうちベクトルABCの成す三角錐を考えると、底面積は半分になり、そこに三角錐の公式をあてはめれば、つまり平行六面体の体積を6で割れば三角錐の体積になることがわかります。

volume_03

モデルに含まれる三角ポリゴンと原点を結ぶ三角錐をすべて合計していきます。特に原点でなくてもいいのですがわかりやすいので原点と結ぶことにします。原点に対してポリゴンが表か裏かで符号が変わるので結果的に負の体積が正の体積の余分な部分を剥ぎ取ってモデルの体積が残ることになります。

ちなみに正確に体積を計算するには三角ポリゴンでなければならないし、モデルに穴がない必要があります。

volume_04

実際にスクリプトにして計算してみました。学生の頃に数学で習った公式にほぼ近い結果がでました。(球や円柱モデルは完全な曲面ではないので実際より少ないです)

当たり前といえば当たり前ですが、ちょっとした感動があります。

応用

これを利用して何ができるかですが、思いついた限りでは大雑把にモデルの重さを推測することが出来るようになると思います。モデルが人体の場合、体積が0.060m^3なら重さはおよそ60kgとなります。(人体の比重は水とだいたい同じ)

もし巨大な怪獣を作ったとしたら、その体重もおおよそ計算できるでしょう。昔のウルトラマンの怪獣のようにスペックにありえない体重を載せて科学的におかしいと指摘されてしまうこともなくなるはずです。比重を調べれば金属等、マテリアルごとの重さも計算したりできますよね。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中