1つだけ過去を変えられるとしたら?

ベクトル、内積、外積など

はじめまして、私は情報系の分野を専門的に学習している学生です。
情報分野ではそれなりの知識を持っているので、あえて数学的な
質問をさせていただきます。

  ・三次元平面上に点ABCがあります。

  ・点ABCを含む平面上に点Pがあります。

三角形ABC内に点Pが存在することを確かめるには、
どのようにすればよいでしょうか?

またこれには以下のような制約があります。

  ・パソコン上で計算するので、なるべく計算回数
   (特に乗算、除算)を抑えたい。

  ・パソコン上では三角関数などは級数なので精度、
   処理速度、共に両立できない。

なので、なるべく少ない計算量で、四則演算のみを用いた
解法が必要です。

以下は私の考えた手順ですが、

  (1)ベクトルBcとBa(もしくはBp)との外積によりベクトルNを得ます。

  (2)ベクトルNとBcとの外積によりBcに直行するベクトルBc´を得ます。

  (3)ベクトルBc´とBpとの内積が負ならば、点Pは線分B-Cの外に位置します。

  これをB-C、C-A、A-Bと行うことで判定します。

これでは外積を2回、内積を1回計算する必要があり、計算量が多いので
より簡潔な手法が必要です。




(本当に数学って大切ですね、もっと勉強しておけばよかった(^^;)

「ベクトル、内積、外積など」の質問画像

A 回答 (2件)

点Pが点ABCを含む平面上にあるなら、


ベクトルAbとApとの外積、ベクトルBcとBpとの外積、ベクトルCaとCpとの外積
この3つのベクトルは平面の法線ベクトルなので、同じ方向か逆方向のベクトルになります。

3つとも同方向なら点Pは三角形ABC内です。

2つのベクトルが同方向か逆方向かは内積の正負で判断できます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
外積で判定ができることは気づきませんでした。

お礼日時:2010/11/02 20:59

ベクトルPA,PB,PCを作ります。


PA・(PB×PC)=0
 これで「同一平面上にある」ということが出てきます。
PA・(PB+PC)<0
 これで「三角形の内部にある」ということが出てくると思います。
A、B、Cを入れ替えたものでやる必要は多分ないだろうと思います。
でも確かではありません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考にさせていただきます。

お礼日時:2010/11/02 21:00

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


おすすめ情報