• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:座標上のある点が、ある3つの座標点で結んだ三角形の領域内にあるか調べる)

三角形の領域内にあるか調べる方法

このQ&Aのポイント
  • 座標を用いて結ばれた三角形の領域内にある点を判定する方法について知りたい。
  • 具体的な座標と点が与えられた場合、数学の分野に基づいた計算方法を知りたい。
  • 左上が原点で、右下がn1,n2となる座標系において、点が三角形の領域内に存在するかを判定したい。

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.2

点(x2,y2)を視点にして点(x3,y3)の方向を見たとき、点(xp,yp)が右側にあるか、左側にあるか 点(x3,y3)を視点にして点(x1,y1)の方向を見たとき、点(xp,yp)が右側にあるか、左側にあるか 点(x1,y1)を視点にして点(x2,y2)の方向を見たとき、点(xp,yp)が右側にあるか、左側にあるか この3つの位置する方向がすべて同じなら、点(xp,yp)は3点で結ばれた三角形の内側にあります。 式で表すと、 z1=(x3-x2)(yp-y2)-(y3-y2)(xp-x2) z2=(x1-x3)(yp-y3)-(y1-y3)(xp-x3) z3=(x2-x1)(yp-y1)-(y2-y1)(xp-x1) を計算して(外積の応用)、 z1>0,z2>0,z3>0 または z1<0,z2<0,z3<0 なら三角形の内側 z1=0,z2>0,z3>0 または z1=0,z2<0,z3<0 なら線分(x2,y2)-(x3,y3)上 z1>0,z2=0,z3>0 または z1<0,z2=0,z3<0 なら線分(x3,y3)-(x1,y1)上 z1>0,z2>0,z3=0 または z1<0,z2<0,z3=0 なら線分(x1,y1)-(x2,y2)上 z2=0,z3=0 なら点(x1,y1)上 z1=0,z3=0 なら点(x2,y2)上 z1=0,z2=0 なら点(x3,y3)上 上記以外は三角形の外側

pnck
質問者

お礼

確かに点の左右の位置関係を見たところおっしゃる通りの現象になっていました。 式もありがとうございます。 いくつかサンプルを用意してみて代入してみたら全てうまく行きました。 結果は得られましたが、正直お二方の回答内容は理解できていませんので、 これから勉強したいと思います。 もっと学生時代勉強しとけばよかった・・・。 本当にどうもありがとうございました。

その他の回答 (2)

回答No.3

数式にこだわらなければ、精度は落ちますが方眼紙にプロットしては。 結果のみでもよければ測量ソフトで計算し、報告しますので、座標を教えて下さい。

pnck
質問者

お礼

お気遣いありがとうございます。 写真の座標にカーソルを当てた時、 それが何かを説明するWebプログラムを作っていますので、 お気持ちだけいただいときます。

  • sak_sak
  • ベストアンサー率20% (112/548)
回答No.1

高校数学の「不等式の表す領域」(たぶん2年生で履修)の知識で調べられます。 A(x1,y1),B(x2,y2),C(x3,y3),P(px,py)とします。 まず直線BCの式を求めます。 求められたものがax+by+c=0だとします。 ここに点Aと点Pの座標をそれぞれ代入します。 つまりax1+by1+cとapx+bpx+cになりますが この符号が同じだったら 直線BCから見てAとPが同じ側にあることになります。 (ax1+by1+c)×(apx+bpx+c)>0 としても良いです。 「>」を「≧」とすれば線上の点も含めることとなります。 同じことを直線CAと直線ABでも行い すべてについて「同じ側」となれば 三角形の内部にあることになります。

pnck
質問者

お礼

どうもありがとうございます。 おっしゃる通り数IIの教科書に書いてありました。 前後で必要な知識もまるっきり忘れてるので全然思い出せないですが、 じっくり読んで理解してみようと思います。

関連するQ&A