姉本回答ポイント 70ptウォッチ 9

プログラマの方に質問です。


《目的》
衝突シミュレーションプログラムを組みたいです。
 ・長方形内に球を任意個数を生成し、それぞれに方向と速度を持たせる
 ・とある時間が経過した後の位置を計算する
 (ビリヤードシミュレーションのようなプログラムを想定)

《思考途中の案》
1)経過時間後の球のベクトルを計算し、ベクトルをリストに登録
2)どれか一つのベクトル(Aとする)を選ぶ
3)ベクトルAと最初に交わる他のベクトル(Bとする)を調べる、交わらないならば2へ
4)Bのベクトルが最初に交わるベクトルがAでないならばBをAに置き換え3へ
5)A、Bのベクトルの衝突後のベクトルを計算し、ベクトルリストに登録する
6)交わるベクトルが無くなるまで2へ

《問題点》
球の個数が少ないうちは総当り的なロジックでも良いが、多くなると計算量が増えて重くなる(万単位)。


そこで、参考になる効率の良いアルゴリズムはないでしょうか?
実装しているサンプルなどありましたら、教えてください。

また、このような問題についてマルチスレッドで処理する方法などありますか?

C、C++、C#、Javaのサンプルですと嬉しいです。
よろしくお願いいたします。

※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
ログインして回答する

みんなの回答

この質問へのコメント

この質問への反応(ブックマークコメント)

質問の情報

登録日時
2008-12-08 00:46:35
終了日時
2008-12-15 00:50:03
回答条件
回答にURL必須 1人1回まで

この質問のカテゴリ

この質問に含まれるキーワード

C++540Java1731C#561プログラマ372アルゴリズム292スレッド378シミュレーション147ベクトル102ビリヤード63ロジック172プログラム5048長方形107

人気の質問

メニュー

PC版