ページ 1 / 1
カーソルが平行四辺形上にあるかどうかの判定
Posted: 2014年3月13日(木) 18:12
by gage
DXライブラリ
VC++2010
平行四辺形を描写する場合はグラフ4つ使うか、三角形2つ使うなどありますが、
描写した平行四辺形の範囲(平行四辺形の内部)を式で表す方法がわかりません。
よろしくお願いします。
Re: カーソルが平行四辺形上にあるかどうかの判定
Posted: 2014年3月13日(木) 18:39
by usao
長方形だったらできるのでしょうか?
→できるとしたら どうやって判定するのでしょう?
→並行四辺形でも同じことをすれば判定できませんか?
Re: カーソルが平行四辺形上にあるかどうかの判定
Posted: 2014年3月13日(木) 18:43
by みけCAT

- 平行四辺形の図
- heikousihenkei.png (1.46 KiB) 閲覧数: 2425 回
図の平行四辺形ABDCにおいて、
点Pが平行四辺形ABDCの内部にある⇔APベクトル=s×ABベクトル+t×ACベクトル (s,tは実数)と表すとき、0<s<1 ∧ 0<t<1
点Pが平行四辺形ABDCの周または内部にある⇔APベクトル=s×ABベクトル+t×ACベクトル (s,tは実数)と表すとき、0≦s≦1 ∧ 0≦t≦1
だと思います。
s,tは二元連立方程式を解けば求まります。
Re: カーソルが平行四辺形上にあるかどうかの判定
Posted: 2014年3月13日(木) 18:58
by usao
ぬぅ,何かしら方法論が書かれてしまったか…
じゃあ答えてしまうと
長方形なら,
・上辺よりも下側にあって
・下辺よりも上側にあって
・左辺よりも右側にあって
・右辺よりも左側にある
という判定を行うことで目的を達成できますよね.
平行四辺形でも同じです.
ちょうど みけCATさんが図を貼ってくれているので,その図内の記号で言えば,
・辺ABよりも右側(…というのは正確な文言ではないが多分通じるだろう)で…
というのを4辺についてやればいいわけですね.
2つの三角形として判定するとかでもいいでしょう.
(3角形の内外判定方法とかは検索すればすぐに見つかると思います)
Re: カーソルが平行四辺形上にあるかどうかの判定
Posted: 2014年3月13日(木) 22:13
by gage
ありがとうございます。