• ベストアンサー

点の内外判定

3点がある空間上に与えられているとします。 その三点で構成される三角形の内部にある点が入るのか、入らないのか を判定することをしたいのですが、どのようにしたらいいですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • newarg
  • ベストアンサー率33% (1/3)
回答No.2

ベクトルを用いるのが簡明だと思います。 ある空間上の3点をおのおのA,B,Cとおく。 また、A,B,Cが三角形をなすことから、A,B,Cの 3点は同一直線上に存在することはなく、また、どの1点も重なることはないとする。 このとき、三角形ABCの内部に存在する点をPとおく。 ベクトルAP=s ベクトルAB + t ベクトルAC (1)とおくと s>0 (2) t>0 (3) s+t<1 (4) (2)かつ(3)かつ(4)が(1)を満たすPの存在条件である。 (三角形の周上の点は除いて考えています) こんな感じでいいのではないでしょうか。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

  • baihu
  • ベストアンサー率31% (114/357)
回答No.6

もっとエレガントな判定方法があるのかもしれませんが、次の方法はどうでしょうか。 3点をA,B,Cとして、ある点をPとする。 S=三角形PAB+三角形PBC+三角形PCAとしたとき、 S=三角形ABCになるなら、Pは三角形ABCの内部の点である。 Pが三角形ABCの辺上にのることを許さないなら、PAB,PBC,PCAのいずれかの面積が0になる場合を除くことにする、と。 どんなもんでしょうか。

全文を見る
すると、全ての回答が全文表示されます。
  • underware
  • ベストアンサー率14% (33/224)
回答No.5

4ですが。「ある空間」という言葉を見逃していた。 レベルの高い話みたいですね。

全文を見る
すると、全ての回答が全文表示されます。
  • underware
  • ベストアンサー率14% (33/224)
回答No.4

よく考えてみると難しい問題なのかな?自分なりに考えてみると。 XY面の3角形の内部に任意の点をとる。かりにここを00とすると3角形を構成する斜線て簡単な数式になる。Y=2X+1みたいな。この線に平行な線は Y=2X+1+Aと表現できますよね。 ある点がY=2X+1+Aの上にあるとして、Aが0なら斜線の線上。Aがプラスの数字になるなら斜線の外側、Aがマイナスの数字なら斜線の内側になる。同じようなことを他の2つの斜線にも考えて、3つの条件を満たさないと、3角形内側じゃないと言えるのでは?

全文を見る
すると、全ての回答が全文表示されます。
  • kony0
  • ベストアンサー率36% (175/474)
回答No.3

>2)の場合は即「入らない」と判定します。 >3)の場合を内部と判定したいです。 この2つは矛盾していますが・・・(汗) 一般的に→AP = m * →AB + n * →AC + k * (→AB×→AC)と書けます。(第3項の×はベクトルの外積) まずは、上式の(m,n,k)を求めましょう。(ただの3元1次連立方程式です。) >2)の場合は即「入らない」と判定します。 であれば、k≠0であれば「入らない」としてください。 >3)の場合を内部と判定したいです。 であれば、上で求めた(m,n,k)に対してk=0としたものが、垂線の足の位置ベクトル(始点A)です。 あとはいずれの場合も、m,nに関して、三角形の内部であることを表す不等式に該当しているかを考えればよいと思います。(#1の「ところで、」以降の内容)

全文を見る
すると、全ての回答が全文表示されます。
  • kony0
  • ベストアンサー率36% (175/474)
回答No.1

幾分題意が定まってないので・・・ 1)「ある点」は三角形を含む平面上にあることは前提ですか? 2)1がNOの場合、「ある点」が平面上にない場合は、即「入らない」と判定するのですか? 3)1,2ともNOの場合、「ある点」から平面におろした垂線の足が三角形に入っていれば「入る」と判定するのですか? ・・・1,2,3ともNOの場合、「三角形の内部」を定義してください。 ところで、平面上に三角形と「ある点」があって、「ある点」が三角形の内部にあるか否かを、ベクトルを使って判定することはできますか?(これは高校の教科書レベルです。)

ejty110
質問者

補足

「ある点」は平面上にあることは前提ではないです。 2)の場合は即「入らない」と判定します。 3)の場合を内部と判定したいです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 3次元の平面上の点かどうかを判定したい

    3次元空間の3点で三角形を作って、その三角形上に点があるかどうかを判定したいのですが、どうすればよいでしょうか? 例えば3点、a(0,0,0),b(10,0,0),c(0,10,0)で三角形abcをつくったとき、(0,1,1)はabcの平面上、(0,10,10)は平面外という風に判定したいです。

  • 点と空間

    空間は点で構成されているでしょうか?

  • ある点がモデルに内包されるかどうかの判別

    プログラミングカテゴリに投稿しようか迷ういましたがこちらに投稿させていただきます。 やりたいのは、3D空間で一つのベクトルによって表現されるある点が、三角形のメッシュの集合としてあらわされるある閉じたモデル(要は一般的な3Dモデルデータのことですが)の内部にあるか外部にあるかを判別するアルゴリズムがしりたいです。 その情報が載っているサイトでもいいです 英語でも構いません 一応ここでいう内部とは各面の法線ベクトルの反対方向に存在する閉じた空間のことです。 -ここから蛇足- Blenderなどの3Dモデリングツールではおなじみのboolean演算ですが、なんとなく一から作ってみようと思っていろいろ調べてみたんですが、三角形メッシュ vs 三角形メッシュ の衝突判定と交線を求めるアルゴリズムは調べてすぐ出てきたんですが、メッシュのモデル内包判定とかVertex のモデル内包判定とか調べても出たなかったので・・・ なのでぶっちゃけbooleanのアルゴリズムについて詳しく書いてあるページがあればそういう情報も大歓迎です

  • 臨界点でHessianが0の時の極値の判定

    微分可能な実多変数関数の臨界点(全ての1回導関数が0になる点)でHessianが0でないときはHesse行列の固有値によってこの点が極値かどうかの判定ができることはよく知られていますが、Hessianが0になるときの判定法を書いてある本は少ないようです。私が考えた結果、次の結論に至りました。 (1)Hesse行列の0以外の固有値に符号が異なるものがあるときはこの点は極値ではない。なぜならば固有値が正の固有ベクトルの方向に関しては極小点となっており、固有値が負の固有ベクトルの方向に関しては極大点となっているから。 (2)Hesse行列の0以外の固有値がすべて同符号で固有値0の空間が1次元であるときは、固有値0の固有ベクトルの方向に関して極値になっているかを調べれば良い。これは1変数関数の極値の判定に帰着するので容易。 (3)Hesse行列の固有値0の独立な固有ベクトルが2個以上のときは、各固有ベクトルの方向に関して調べてもこの点が極値であるかどうかの判定はできない。 そこで、やっと質問ですが、(3)の場合は極値の判定はどの様にしたら良いのでしょうか。

  • 線と点の当り判定

    (ax,ay)と(bx,by)を結ぶ線上に点(cx,cy)があるかを判定するプログラムを教えてください。

    • ベストアンサー
    • Flash
  • エクセル 小数点一桁目を判定

    お尋ねします。 エクセルで次の処理を行いたいのですがどなたか教えて下さい。 1)判定結果が小数点一桁目まで集計計算されます。   例えば、5.6とか3.5とかいった具合です。 2)この集計結果の小数点1桁目をみて、「5捨6入」で判定を行い、切り上げ・切り捨て処理をしたい。 小数点1桁目が「6以上」の場合は切り上げ、「5以下」の場合は切り捨てになります。 例えば、5.6の場合は0.6を切り上げて最終判定は6になり、3.5の場合は、0.5を切り捨てて3となります。 1.7だったら2、6.4であれば6になります。 マクロかVBAを使うことになるのでしょうか? どちらも素人ですのでわかりやすくご指導頂ければありがたいです。 お願い致します。

  • 多角形の内部かどうか判定する方法

    2次元座標系にあるn個の点を順に接続して多角形を作ります。 n個の点は(x1,y1)-(x2,y2)-…-(xn,yn)とします。 (xn,yn)と(x1,y1)を最後につないで閉じた多角形とします。 このとき点(a,b)が多角形の内部にあるかどうかを判定するにはどのようにしたら良いでしょうか? 辺同士が交わるような点の配置は無いとします。 よろしくお願いします。

  • 物理シミュレータを自分で組んでいるのですが、物体の衝突判定のために物体

    物理シミュレータを自分で組んでいるのですが、物体の衝突判定のために物体周りのディスタンスフィールドを構築しようとしています。そのために、物体周りの各格子点からオブジェクトの一番近いメッシュへの距離を求めたいです。 そこで質問なのですが、三次元空間上のある点から、同じく三次元空間上の三角形までの最小距離はどのように求めればよいでしょうか?直線と三角形の交差判定+線分と直線の交差判定を組み合わせれば実装出来そうな気がしますが、もっと簡単な方法がないものかと思って質問させていただきました。 またそもそもディスタンスフィールドを構築出来るもっと良い方法があれば教えてください。 わかりにくい説明ですみません。 よろしくお願いします。

  • 衝突判定プログラムの作成方法について

    環境 VisualC++ 3D空間上に点1(x1,y1,z1)と点2(x2,y2,z2)の二点があるとします。 その二点を結ぶ直線間に、オブジェクトが存在するか否か判定したいです。 どのようなアルゴリズムにすれば良いでしょうか? わかる方いらっしゃいましたら、是非アドバイスのほうよろしくお願い致します。

  • 合格判定について・・・

    合格判定をしてくれる 予備校(駿台・代々木・河合)や進研などありますが、判定に30点ぐらい誤差があるのですが、どの会社の判定がいいのでしょうか??

1人暮らしの洗濯物について
このQ&Aのポイント
  • ワンルーム六畳に1人暮らしして17年経過します
  • 洗濯物の置場所や管理方法についてアドバイスをお願いします
  • 洗濯物の状態が悪いとクローゼットへのアクセスや空気の入れ替えが困難になります
回答を見る