「良く言えば、個性的ね...」が 代名詞。
[1]
[2]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
href="https://chihoizu.blog.shinobi.jp/hoge/EditEntry/248/" target="_blank">昨日 書いていた円の領域をコピーする方法ですが、何とか上手くいきました。 (^^)v
これでとりあえず「たまたまみずたま」に取り掛かることができそうです。
ついでにサンプル作ってみました。
きっと、「円の領域コピーするのになんでこんな七面独裁ことをするんだ...」
と思われる方も多いかと思われますが、いいじゃないですか。こんなやり方をしたって。例えそれがアクションものではオーバーヘッドがかかって使いものにならなかったとしても。
これでとりあえず「たまたまみずたま」に取り掛かることができそうです。
ついでにサンプル作ってみました。
きっと、「円の領域コピーするのになんでこんな七面独裁ことをするんだ...」
と思われる方も多いかと思われますが、いいじゃないですか。こんなやり方をしたって。例えそれがアクションものではオーバーヘッドがかかって使いものにならなかったとしても。
さて、これでパズルを作り始めれる...と思ったら、まだ問題があることに気がつきました。
空白のピースから隣のピースにマウスが移った時に、始めてその(逆の)方向にピースを動かす...といった動作をさせるためには、現在のマウスがどのピースの上に存在するかということを判定しなければなりません。
今までは、長方形や円に近似させれば良かったのですが、今回は斜め向きの台形などもあるため、もう少し真面目に内外判定をしなければユーザーの思ったとおりの動きにはならないことに気がつきました。
う~ん、これは数学に頼るしかない...。
ということで、「内外判定」「座標」あたりで検索をかけると、
「偏角の原理」というものを見つけました。
あなたがビルのてっぺんにいるとします。
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)
となるのではないかと。
やっとプログラムにできるところまできましたね。
空白のピースから隣のピースにマウスが移った時に、始めてその(逆の)方向にピースを動かす...といった動作をさせるためには、現在のマウスがどのピースの上に存在するかということを判定しなければなりません。
今までは、長方形や円に近似させれば良かったのですが、今回は斜め向きの台形などもあるため、もう少し真面目に内外判定をしなければユーザーの思ったとおりの動きにはならないことに気がつきました。
う~ん、これは数学に頼るしかない...。
ということで、「内外判定」「座標」あたりで検索をかけると、
「偏角の原理」というものを見つけました。
あなたがビルのてっぺんにいるとします。
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)
となるのではないかと。
やっとプログラムにできるところまできましたね。
昨日考えた式を元に、簡単なサンプルを作ってみました。
...良かった。間違っていなかったようですね。
ということで、サンプルは こちら から。
今回はソース(*.hsp)と *.exe と両方入れてありますのでサンプルの動作だけを見ることもできます。
今回のサンプルは、私の動作確認が目的なので動きを期待しないように。
...良かった。間違っていなかったようですね。
ということで、サンプルは こちら から。
今回はソース(*.hsp)と *.exe と両方入れてありますのでサンプルの動作だけを見ることもできます。
今回のサンプルは、私の動作確認が目的なので動きを期待しないように。
朝の地下鉄の中で逆三角形のサンプルができました。 :-)
こちら にソースをのっけておきます。
▽の場合、△と比較した違いは、grotate で指定する x, y 座標が三角形の高さの 1/3 上にずらさなければならないということに尽きます。
そのあたりがサンプルを動かしてみていただければわかるのでは、と思います。
ということで、今日はこのへんで。
こちら にソースをのっけておきます。
▽の場合、△と比較した違いは、grotate で指定する x, y 座標が三角形の高さの 1/3 上にずらさなければならないということに尽きます。
そのあたりがサンプルを動かしてみていただければわかるのでは、と思います。
ということで、今日はこのへんで。
カレンダー
12 | 2025/01 | 02 |
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 | 31 |
茶崎白湯さんの4コマ
カテゴリー
最新記事
(12/02)
(10/22)
(09/16)
(08/20)
(07/31)
最新コメント
最新トラックバック
プロフィール
HN:
伊豆 千穂 (いず ちほ)
HP:
性別:
非公開
自己紹介:
でも使い分けしきれていない、
中途半端な人物です。 (--;
ゲーム... 伊豆 千穂 担当。
ツール... 山科 聡 担当。
でも使い分けしきれていない、
中途半端な人物です。 (--;