プロが教える店舗&オフィスのセキュリティ対策術

3次元の物体、例えば正四面体の頂点のデータを取得したとします。正四面体は1つの面は三角形ですので3つの点の(x,y,z)座標が得られていることになります。で、それが4面なので4セットあることになります。さて、質問ですが、その面に対する物体の”外向き”単位法線ベクトルを計算することを考えます。法線ベクトルは割りと簡単に計算できますが、外向きか、内向きかを判別するアルゴリズムにはどのようなものがあるでしょうか。その1つの面(3つの点)だけだったら物体の全体像がわからないのでその他の点(残り1つですが)を使うことになると思いますが。どのようになるでしょうか。

また、正n面体の物体ではどうなるのでしょうか。正でなくn面体ならどうなるかという問題があります。
面構成する頂点の座標が与えられているというのが基本の前提条件です。よろしくお願いします。

A 回答 (4件)

思いつきですみませんが,一応もう一つ,


法線ベクトルを生成した面の中心pとし内向きベクトルをi,外向きベクトルをoとすると
次の半直線は他の面と交点を持ちます.
m=p+i*t (t:正の実数)
一方こちらの半直線は他の面との交点を持ちません.
n=p+o*t (t:正の実数)
つまり,他の平面の式と二つの半直線の線の式をtについて解いて負の数になる方が外向きと言うことになります.
    • good
    • 0

すべての面が分かっていて, かつ「凸である」ことを仮定できるなら, 面の法線ベクトルと適当な頂点との内積をとればいい.


あるいは, (有界性を仮定するなら) 逆に「十分に遠方の点」との内積をとってもいいかな.
    • good
    • 0

感覚的な回答になります.


正n面体の場合,注目する面で2つの法線ベクトル候補が求められると思います.
(文章中の内向きと外向き)ここで,注目する面の中点Mを求めて,その点を基準にいて
注目していない点Pkを平均化します.
4面体の場合は残りは1点,6面体の場合は4点,
残りの点をm点とすると平均化したベクトルを
x=(1/m)*Σ(OPk-OM)
とします.さらに正規化をしておきます.ここでx,Opk,OMそれぞれがベクトルです.
もしここで法線ベクトル候補が内向きならば,ベクトルxとの内積が大きくなります.
外向きの場合はベクトルxとの内積が小さな値となるはずです.
このように分離が可能かと思います.
正多面体でない場合は想像の範囲を超えていますので,すみませんが分かりません.
    • good
    • 0
この回答へのお礼

なるほど。回答有難うございます。

リファレンスになるベクトル(2つの法線ベクトルと内積を取って内向き外向きを判別する)の取り方について明確なアドバイスを頂きました。任意の別の頂点だと殆ど面内のベクトルに近くなって判別に使いづらい場合もあるのでこの方法かなと思います。多面体はできるだけ具合がいい(ヘンテコでない)ように作成されるのでこのアルゴリズムでいいように思います。

お礼日時:2010/09/17 14:16

一般の正n面体について


ある任意の面(正n多面体のj番目の面)の方程式をfj(x,y,z)=0とすると、その平面の法線ベクトルの頂点座標を(uj,vj,wj)とし、平面に属する頂点以外の頂点の1つの座標を(ai,bi,ci)とすると
f(uj,vj,wj)f(ai,bi,ci)<0なら法線は外向き、
f(uj,vj,wj)f(ai,bi,ci)>0なら法線は内向き、
と判定できると思います。

求めた法線ベクトルと、平面から、平面外の他の任意頂点を通る法線ベクトルの内積をとって
内積が負であれば外向き法線
内積が性であれば内向き法線
と判別しても良いですね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!