忍者ブログ
「良く言えば、個性的ね...」が 代名詞。
[245] [244] [243] [242] [240] [239] [238] [241] [237] [235] [236]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

さて、これでパズルを作り始めれる...と思ったら、まだ問題があることに気がつきました。

空白のピースから隣のピースにマウスが移った時に、始めてその(逆の)方向にピースを動かす...といった動作をさせるためには、現在のマウスがどのピースの上に存在するかということを判定しなければなりません。

今までは、長方形や円に近似させれば良かったのですが、今回は斜め向きの台形などもあるため、もう少し真面目に内外判定をしなければユーザーの思ったとおりの動きにはならないことに気がつきました。

う~ん、これは数学に頼るしかない...。


ということで、「内外判定」「座標」あたりで検索をかけると、
「偏角の原理」というものを見つけました。

あなたがビルのてっぺんにいるとします。
4つの地点を結んでできる四角形の左回り(または右回り)の順番で
それぞれの地点を見ていく時、元の頂点に戻るまでに一周したら
あなたは4つの地点の内部にいます。
一周せずに体をねじるだけに終わったら外部にいることになります。

...なるほど、体感しました。


で、これを式に表すと

すべての辺に対し対象点との外積が全て同一符号なら内部

(P-A)×(B-A)
(P-B)×(C-B)
(P-C)×(D-C)
(P-D)×(A-D)

となるそうです。

ちなみに外積は

Q×R = Qx × Ry - Rx × Qy
    = |Q||R|sin(θ)

なので、2つをあわせると

(Px - Ax)×(By - Ay)-(Bx - Ax)×(Py - Ay)
(Px - Bx)×(Cy - By)-(Cx - Bx)×(Py - By)
(Px - Cx)×(Dy - Cy)-(Dx - Cx)×(Py - Cy)
(Px - Dx)×(Ay - Dy)-(Ax - Dx)×(Py - Dy)

となるのではないかと。

やっとプログラムにできるところまできましたね。

で、すっ飛ばしたにしても、ここまでたどりついたあなたのために、サンプルを作ってみました。 (^^)v

こちら です。

カーソルを動かすと、4つの黄色の点の内部にある時は青色、外部にある時は赤色にかわります。

単にそれだけのサンプルですが、ぐりぐり動かしていると、何かゲームができそうな気が...。

そう、昔はサンプルを作りながらゲームの発想が生まれたものでした。
しばらく忘れていたなぁ...この感覚。
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
この記事へのトラックバック
この記事にトラックバックする:
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
HSPプログラムコンテスト2011
■ HSPTVプログラム部門 ■
ID: 5 RadialSliderPetit
茶崎白湯さんの4コマ
ちほ への伝言
最新コメント
(11/15)
(08/29)
(12/05)
たぶん(返信済)
(10/28)
雰囲気(返信済)
(10/05)
最新トラックバック
プロフィール
HN:
伊豆 千穂 (いず ちほ)
性別:
非公開
自己紹介:
ゲーム... 伊豆 千穂 担当。

ツール... 山科 聡 担当。

でも使い分けしきれていない、
中途半端な人物です。 (--;
ブログ内検索
アクセス解析
忍者ブログ [PR]