プログラミング初心者です。
言語は「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で質問しましょう!
似たような質問が見つかりました
- 物理学 時間を語るなら、(複数の時間の正体)を知る必要が有る。 1 2023/02/16 22:14
- 離婚・親族 離婚調停の調停員の立場に関しての質問 3 2022/05/21 10:58
- 数学 モデルのパラメータの定義がいまいちわかりません。 3 2022/10/11 15:16
- 日本語 「~人」と「~名」の使い分け 2 2022/06/02 11:59
- 哲学 説得力を修辞の巧みさまたは論理の強さの2つに分析するにはどうすると良いでしょうか? 0 2022/07/20 05:46
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- 英語 関係代名詞「非制限用法」が説明する先行詞が無冠詞複数形の場合「一般的総称」と見なすことの可否について 10 2022/07/20 10:19
- Illustrator(イラストレーター) イラストレーターの面積を求める 1 2022/04/17 11:05
- その他(言語学・言語) 祖語間の対照言語学 1 2022/05/18 21:43
- その他(車) バッテリーテストレポートの結果について 7 2023/08/21 10:49
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
c言語でキーボードから2点の座...
-
交差する2線分の交点座標の求め方
-
MATLABの画像処理、2本の直線の...
-
マインクラフト(pc版)で座標...
-
ガウシアンフィルタのCプログラム
-
回転する矩形同士の当たり判定...
-
位置座標からx軸となす角度(ラ...
-
エクセルである点からの距離で...
-
ピクチャボックスの座標取得
-
虚数は我々日常生活の身近なと...
-
Excel VBA ・・・教えてください
-
始点、終点の二つの座標と半径...
-
プログラミングの問題について...
-
visualbasic でform上に正三角...
-
画像回転について
-
C アルゴリズム(モンテカルロ法)
-
スクリーン座標からワールド座...
-
重力の計算
-
PPTのVBA スライド右下端の座...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
エクセルで回転する座標の出し方
-
エクセルである点からの距離で...
-
3次元空間上の2つの座標から...
-
閉図形の座標の配列が右回りか...
-
ダイアログ内コントロールの位...
-
始点、終点の二つの座標と半径...
-
座標を持った平面範囲に座標を...
-
空間上の二点を結ぶ直線上に任...
-
エクセルシート上のマウスポイ...
-
多角形の内部かどうか判定する方法
-
ワード上Shapeの位置情報を統一...
-
Excel VBA で自在に図形を変化...
-
OpenCvSharp4による画像判定解...
-
C言語 配列で座標
-
シーケンサー(PLC?)で制...
-
以下のプログラムは重心を求め...
-
交差する2線分の交点座標の求め方
-
VB6のPrinter.ScaleWidth に対...
おすすめ情報