DXライブラリ
VC++2010
平行四辺形を描写する場合はグラフ4つ使うか、三角形2つ使うなどありますが、
描写した平行四辺形の範囲(平行四辺形の内部)を式で表す方法がわかりません。
よろしくお願いします。
カーソルが平行四辺形上にあるかどうかの判定
Re: カーソルが平行四辺形上にあるかどうかの判定
長方形だったらできるのでしょうか?
→できるとしたら どうやって判定するのでしょう?
→並行四辺形でも同じことをすれば判定できませんか?
→できるとしたら どうやって判定するのでしょう?
→並行四辺形でも同じことをすれば判定できませんか?
Re: カーソルが平行四辺形上にあるかどうかの判定
点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は二元連立方程式を解けば求まります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: カーソルが平行四辺形上にあるかどうかの判定
ぬぅ,何かしら方法論が書かれてしまったか…
じゃあ答えてしまうと
長方形なら,
・上辺よりも下側にあって
・下辺よりも上側にあって
・左辺よりも右側にあって
・右辺よりも左側にある
という判定を行うことで目的を達成できますよね.
平行四辺形でも同じです.
ちょうど みけCATさんが図を貼ってくれているので,その図内の記号で言えば,
・辺ABよりも右側(…というのは正確な文言ではないが多分通じるだろう)で…
というのを4辺についてやればいいわけですね.
2つの三角形として判定するとかでもいいでしょう.
(3角形の内外判定方法とかは検索すればすぐに見つかると思います)
じゃあ答えてしまうと
長方形なら,
・上辺よりも下側にあって
・下辺よりも上側にあって
・左辺よりも右側にあって
・右辺よりも左側にある
という判定を行うことで目的を達成できますよね.
平行四辺形でも同じです.
ちょうど みけCATさんが図を貼ってくれているので,その図内の記号で言えば,
・辺ABよりも右側(…というのは正確な文言ではないが多分通じるだろう)で…
というのを4辺についてやればいいわけですね.
2つの三角形として判定するとかでもいいでしょう.
(3角形の内外判定方法とかは検索すればすぐに見つかると思います)