プログラミング初心者です。
言語は「processing」ですが、他の言語での解説でもOKです!
二次元内で画面内の複数の正方形がランダムに回転しながら移動するときの衝突判定ができずに悩んでいます。
回転がない場合はできるのですが・・。
色々調べてみて、各頂点と辺の最短距離を全ての場合に調べたり、分離線というものを使ったりと、考え方としては納得できるのですが、具体的にどのように書けばいいかが分かりません。
私のベクトルの理解が不十分なのかもしれないのですが、具体的な例があれば嬉しいです。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
素直に当たり判定するなら、線分と線分が交わるかだけで判定できます。
四角形と四角形同士の全部の線分の交わりチェックをしてみてください。http://www5d.biglobe.ne.jp/~tomoya03/shtml/algor …
ただこれは問題が合って、動くもの同士だとすり抜ける可能性があります。例えば四角の角の先だけが近い状態でお互いに逆方向に回転しているとしたらどうですか?いとも簡単にすり抜けると思いませんか?理由はフレームという切り取られた時間で処理するから位置がジャンプするために起こる問題です。なので実際には連続した時間での動きを擬似的に処理しないといけません。良いサイトがないか探して見ますがとりあえずここまで書き込んでおきます。
No.5
- 回答日時:
すいません。
丁度よいサイトが見つけられませんでした。提案ですが3D格闘ゲーム系では当たり判定で動く直方体の当たり判定をしてますから参考になると思います。
関連する本を上げておきますので本屋で参考になるかチェックしてみてください。
http://www.amazon.co.jp/dp/4797341807
http://www.amazon.co.jp/dp/4798021180
http://www.amazon.co.jp/dp/4873113776
No.4
- 回答日時:
#3の回答は少しウソがありまいた。
完全に内包していると判定できません(^^ゞで、回転する長方形の当たり判定を書いたサイトを見つけたので参考にしてください。
http://www.c3.club.kyutech.ac.jp/gamewiki/index. …
これでも動きのある物体の当たり判定には問題が残ります。
ご回答ありがとうございます!
一応外積を使った方法でやってみましたが、一見上手くいったと思いきや、やはりおっしゃるとおり回転する矩形ではすり抜けが頻繁に起こってしまいました。
軌跡を出してその交差から判定するのも考えましたが、複雑な形になりすぎてどうした物か・・・。
もうちょっと考えてみます。
No.2
- 回答日時:
ご質問なさっているのは、プログラムと言うよりは、その前の数学の問題ではないでしょうか?
はるか昔の学校の知識を思い出しながらの回答なので、もっとエレガントな回答がありだろうと思いますが、それは他の方に譲るとして…
(実際には、そちらの方法の方が計算負荷が少ないと思いますが)
1)2つの正方形(A,Bとする)の中心間距離Dを求める。
2)Dが、A、Bの対角の和の1/2より大きければ、重ならない。
3)Dが、A、Bの一辺の和の1/2より小さければ、重なる。
4)上記2)、3)以外の場合
Aの頂点4点のうちBに近い2点を選択して、その辺にBの各辺(実際
は近い2辺をチェックすれば足りると思う)が交わっていれば、重なっ
ていると判定。
(Aの2点は、2番目、3番目が同じ距離の場合があるがどちらでもOK)
4-2)Aの1辺が座標軸(仮にX軸とする)となるようにBの頂点を座標変換
4-3)Bの各辺について、端点の新座標のy座標の正負が逆で、かつ新
X軸に交わる時のX座標がAの一辺の長さ以下であれば交わっている。
(=重なっている)
…ってな感じではどうでしょうか?
実際の計算では、並行な場合とか角度0などで0割り算が出ないようにしなければならない分注意が必要でしょうけど。
また、4)の座標変換は、事前に一般式で机上で解いておけば計算がもっと簡単にできそうな気がします。(判定したい内容は決まっているので)
もしかすると、曲座標系で解いた方が簡単かも…(忘れてしまったけど)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
都道府県穴埋めゲーム
都道府県の名前を1人1つずつ投稿してください。全ての都道府県が出たら締め切ります!
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
C++で外積
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
空間上の二点を結ぶ直線上に任...
-
3次元空間上の2つの座標から...
-
ピクチャボックスの座標取得
-
多角形の内部かどうか判定する方法
-
2D座標を3D座標に変換する...
-
c#で直線が図形内にあるか判定
-
エクセルで回転する座標の出し方
-
求積表の計算方法
-
閉図形の座標の配列が右回りか...
-
【C#】アクションゲームの地...
-
c言語でキーボードから2点の座...
-
ボタンを基準にしたクライアン...
-
ExcelやAccessで社内の端末の配...
-
エクセルである点からの距離で...
-
画像ファイルに座標が記録され...
-
最小二乗平面
-
凸型の多角形の座標
-
直線上にある点の座標の求め方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
3次元空間上の2つの座標から...
-
ダイアログ内コントロールの位...
-
エクセルである点からの距離で...
-
画像ファイルに座標が記録され...
-
始点、終点の二つの座標と半径...
-
直線上にある点の座標の求め方
-
エクセルで回転する座標の出し方
-
以下のプログラムは重心を求め...
-
閉図形の座標の配列が右回りか...
-
シーケンサー(PLC?)で制...
-
座標を持った平面範囲に座標を...
-
円弧の描画について
-
多角形の内部かどうか判定する方法
-
図形が重なりあっているかどうか
-
ガウシアンフィルタのCプログラム
-
ワード上Shapeの位置情報を統一...
-
ピクチャボックスの座標取得
-
交差する2線分の交点座標の求め方
おすすめ情報