2011年4月9日土曜日

四面体の体積を求める/指定した点が四面体の中に含まれるかを確認する

三次元空間内の4点 Pi (i=1,2,3,4) を頂点とする四面体の体積を求める例題です。

また、指定した点 Q がその四面体の中に存在するかを確認する方法についても考えています。

まず、四面体の体積に関する計算方法ですが、
CASIO の keisan の HP : http://keisan.casio.jp/
が役に立ちました。
トップページから空間幾何のリンクへ飛び、その中に四面体の体積の計算方法が記載されています。

点 A,B,C,P に対し、
A→B : b ベクトル
A→C : c ベクトル
A→P : p ベクトル
というベクトルを定義し、
体積 V = (p・(b×c))/6 (・は内積、×は外積)
という形で計算されます。

また、空間幾何のページを参考に、点(P)と平面(三角形ABC)の距離を求め、
体積 V = (底面積×高さ)/3
により計算しています。
底面積(三角形ABCの面積)は、ヘロンの公式により、
B→C : a ベクトル
C→A : b ベクトル
A→B : c ベクトル
s = (|a|+|b|+|c|) / 2
底面積 S = sqrt(s*(s-a)*(s-b)*(s-c))
により計算しています。

両者の計算が一致することを確認しています。

四面体の中に点 Q が存在するかどうかに関しては、
1. 点 Q と他4つの点 Pi を頂点とする4つの四面体の体積を求める
2. 元の四面体の体積と4つの四面体の体積が一致すれば、点 Q が四面体の内部に存在することになる
という確認方法をとっています。
文章だけでは確認しずらいと思いますので、実際に図を書いてみて確認して頂ければと思います。

ソース等をまとめたもの:DL


3dvector.h

3dvector.cpp
tetrahedron.cpp 実行結果

0 件のコメント:

コメントを投稿