- ベストアンサー
ある座標値が、三角形の中に入っているか判断
お世話になります。 以下の問題について公式的な解き方を教えてください。 ある3点の座標値A(x1,y1) B(x2,y2) C(x3,y3)を結んで作られる三角形の中に、 座標地D(x,y)が入っているかどうかを判断するにはどうしたらよいでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1の方法は、内積では180度を超えているかどうかの判断はできません。 #2の方法は、外側にあるときでも2つの内積が負になる場合があります。 三角形ABCの回転の方向(A→B→C→Aと回ったときの向きが右周りか左周りか)と、3つの三角形DAB,DBC,DCAの回転の方向が同じであれば三角形の中に入っていることになります。 (3つの三角形DAB,DBC,DCAの回転の方向が全部同じかどうかでも判断できます) 三角形ABCの回転の方向は、 x1(y2-y3)+x2(y3-y1)+x3(y1-y2) の符号で判断できます。 (正なら左周り、負なら右回り)
その他の回答 (2)
- htms42
- ベストアンサー率47% (1120/2361)
#1のご回答の修正版です。 Dが内部にあればDA,DB,DCの間の角度の和は360°です。 90°以上の角度が必ず2つ以上出てきます。 したがって角度を求める必要はありません。 内積をとって負になるものが2つ以上あれば内側です。 外側にあるときは内積が負になるのは1つ以下です。
お礼
ありがとうございました。m(_ _)m
- at9_am
- ベストアンサー率40% (1540/3760)
公式ではありませんが、私なりの考え方を一つ。 ベクトルを考えると楽かな、と思います。 DA、DB、DCベクトルを考えたとき、この三本のベクトルが180度の中におさまっているのであれば、Dは三角形の中にはありません。逆に180度の中におさまっていないのであれば、三角形の内部にあります。 座標が分かっているのであれば、ベクトルの内積から、なす角は容易に求めることができるはずです。
お礼
ありがとうございました。m(_ _)m
お礼
#1,#2で納得したつもりでしたが確かにおっしゃるとおりですね。。 三角形の回転方向を使うなんて発想は出てきませんでした!ありがとうございました!