• ベストアンサー

物体の衝突に関して

私は今、ポケットビリヤードのような、玉突きをシミュレートするプログラムを作っています。はねかえり係数=1で、質量、半径が等しい球の一対一の衝突についての式はたてることができました。最終的には親玉が、三つの球(この三つは正三角形にならべられており、互いが接しているとします。四つの球とも、半径、質量が等しく、跳ね返り係数は1とします。)に衝突するプログラムにしたいと考えていますが、運動方程式に自信がありません。三つの球にどのように力が働くのですか?式をたてるのを難しく感じています。アドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.3

 卒研でしたか。なるほど。  自分で考えたテーマなんでしょうか?ひょっとして、教官からテーマを与えられた?  ご質問に使われている用語から、あまりビリヤードのご経験がないらしいことが推察されます。ビリヤードって一体どんな現象なのか、まず入門書(実用書コーナーにあり)は必携でしょう。それから上手な人に実際に技を見せて貰い、解説してもらうことを是非お勧めします。ひなびた玉撞き屋のオヤジを拝めばキット魔法のようなのを見せてくれます。ビデオカメラで記録するのも必要ですが、自分の目で良く見ることが最も大切です。  指導教官もビリヤードの物理が分かっていない可能性大です。教官にも一緒に見て貰って、どこまで単純化するか相談すべきかも知れません。(授業料を払ってるんですから、教官を使うのに遠慮は要りません。)  研究として、なるべく本物の現象に近いシミュレーションを目指すというのなら、これは数値物理学の研究ですね。つまり実際に条件がコントロールされた物理実験を行って、シミュレーション結果と突き合わせるのでなくては「本物の現象に近い」かどうか実証できません。着実にやるのなら、動いている玉の回転を計測する方法も開発しなくてはならず、今から卒研としてまとめるのは実際上難しいでしょうね。ビデオカメラで簡単に測れる運動量や軌道の形などだけを測定し、回転については理論的に扱うに留めて、結果としてシミュレーションが実験と合うかどうかを検討するという位がせいぜいでしょうか。それでも玉を撞く「マシン」を作らなくちゃいけないことに変わりはありませんが、取りあえず寺の鐘を撞く撞木のような簡単な装置でも事は足りるかもしれません。(いや、キューの先端の形状、チョークの付け方など、コントロールが難しい要因はまだまだあるなあ…どうしましょう?)  この線で進めるなら、少なくとも、対象とする現象をもっと絞るべきです。例えばクッションや的玉の話はなしにして、スピンの付いた手玉の動きだけを徹底追及する。一番基本的な物理現象のモデルに注力するんです。ここが出来ていないと全て砂上の楼閣ですからね。  これをやらないのなら、単に易しい「プログラミング演習」をするに過ぎないわけで、だったらモデルはテキトーで良いということになりますし、(GUIを除けば)1週間もあれば完成するでしょう。複雑な摩擦を無視するなら、ビリヤードと言わずエア・ホッケーゲームぐらいにしておくべきかも。

matsuko-0420
質問者

お礼

何度もありがとうございます。アドバイスいただいたことをもとに、さらに指導教官と話し合っていきたいと思います。それにしても、ビリヤードってすごいスポーツなんですね。玉を突く場所によって動きも違ってくるんですね。もっともっと勉強すべきです!頑張ります!ありがとうございました。

その他の回答 (2)

回答No.2

お答えはできませんが、興味深いのでコメントさせて下さい。 stomachmanさんのおっしゃることは誠にもっともで、まさに正論と思います。 しかし、もう少し簡単なアプローチ法もほしいところです。 特に、 > 複数の的玉が接触して並んでいる所に手玉を当てた場合、これら一群の玉の > 中を通過する音波(粗密波)の干渉によって、どの玉にどれだけのエネルギ > ーが与えられるかが決まります。くっつけて一列に並べた的玉の端に、列の > 軸上から手玉を当てたとき、的玉の一番遠いものだけが動く、という現象は > 粗密波の伝播で説明される典型的ケースです。 の話は、時々書物でも見かけますが、何か大げさすぎるような気がしています。 こんな風に考えられないでしょうか。玉をくっつけるのではなく、わずかに離しておきます。手玉が最初に衝突するのも、ぎりぎり、どれか一個となるように、条件を加減します。これなら、第一近似としては、ご質問者がやられている完全弾性衝突モデルで扱えます。こうしておいて、玉を近づけていき、くっついたときの極限を探るのです。複数の玉があれば、近づけ方はいろいろあるでしょうが、もし、どの場合もある一つの衝突後の運動状態に漸近するなら、それが、くっつけて置いたときに実現する運動で、これが「粗密波の干渉」で考えたモデルにも一致する、、ように予想します。直感なので、あまり自信はありません。(乞ご批判)

matsuko-0420
質問者

お礼

どうもありがとうございました。あまりにも広く考えていて、もっと的を絞るべきだと反省しています。  hagiwara.mさんのアドバイスのように球を少し離して考えてみようと思います。物理を専門に学んだことはないのですが、本当に奥が深いんですねー!!もっと色々なことを考慮してより正確なシミュレーションにしたいです.....頑張ります!       

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.1

> 玉突きをシミュレートする ことそのものを目的となさっているとはちょっと思えません。なぜなら > はねかえり係数=1 と仮定していらっしゃるからです。 玉突きをそれらしくシミュレートするならば、少なくとも以下の要因を考慮する必要があると思います。 ●手玉を撞いた直後  玉をキューで突く時の撞点の選び方によって、玉に回転が掛けられます。横方向の回転(回転軸が鉛直)と縦方向の回転(回転軸が水平)とに分解できます。玉と台とは点接触しているわけではなく、ラシャがへこむことによって小さいながら面で接触しています。  縦方向の回転だけを考えても、玉は(特別な場合を除いて)ラシャの上で滑って移動し、いずれ滑らなくなる(ころがり摩擦)まで、滑る間に動摩擦でラシャから角運動量を与えられます。この手玉が他の玉に正面衝突した場合、ほぼ瞬間的に速度は0になり、従ってその場で回転している状態になる。そしてラシャとの摩擦によって再び走り出します。押し玉(順回転、あるいは単に転がした場合)・引き玉(バックスピンを与えた場合)というのがこれです。  横方向の回転は玉の軌道をカーブさせます。特にマッセと言われるテクニックでは、キューを立ててほぼ真上から撞くことによって、玉の運動量をごく小さくしつつ横方向の回転を大きくすることで、極度に曲がった軌道を走らせることができます。  さらに、撞点の選び方と強さによっては、玉を飛ばすことができます。この場合、玉はラシャから離れてるため直線的に飛び、回転も変化しません。ラシャ面に落ちると、回転が摩擦によって変化し、また弾んで飛び上がります。いずれこの運動は収束して転がる状態に変化します。 飛んでいるの手玉が的玉に正面衝突すると、的玉の上方にぶつかる。そして跳ね返り、高く飛び上がります。 ●的玉とのインタラクション  手玉の回転は的玉の運動量および回転にも影響を与えます。手玉と的玉が接触している僅かな時間に、回転が摩擦で伝達されるのでしょう。的玉が転がることによって、ラシャとの摩擦により、当然「押玉」と同様の順回転が発生します。これは運動エネルギーを回転に費やすことになる。 勿論反発係数が1ということはありません。音が出ますからね。 ●クッションとのインタラクション クッションは単純な形状をしていませんので、ぶつかる運動量によって変形の仕方が違い、従って効果も異なってきます。 クッションにぶつかっている間に、玉の回転とクッションとの摩擦が生じ、これが玉の跳ね返る方向に影響を与えます。特に横回転によって向きがかなり変えられます。極度に強い順回転ですと、クッションをよじ登って台から飛び出すこともあります。さらに玉が飛んでいる場合も考慮しなくてはなりませんね。  玉の回転そのものはほぼそのまま維持されているわけですから、ぶつかる前までは例えば順回転していた玉でも、ぶつかった後は(運動の方向が変わるために)逆回転+横回転という状態に変化します。  ポケットがあるビリヤードはかなり複雑です。ポケットの周囲のクッションの性質は他の部分とは違っているからです。  以上は玉の変形、キューとのインタラクション、クッションの変形の詳細などについてまでシミュレーションを考えてはいない。たとえば、複数の的玉が接触して並んでいる所に手玉を当てた場合、これら一群の玉の中を通過する音波(粗密波)の干渉によって、どの玉にどれだけのエネルギーが与えられるかが決まります。くっつけて一列に並べた的玉の端に、列の軸上から手玉を当てたとき、的玉の一番遠いものだけが動く、という現象は粗密波の伝播で説明される典型的ケースです。  ですから、ホントは何をやりたいの?ということをはっきりさせ、どこまでモデル化し、どこは理想化するかを切り分けないと話にならないと思いますよ。

matsuko-0420
質問者

お礼

回答ありがとうございます。そんなに詳しく考えなくてはいけないことを知り、びっくりしました。   私は情報電子工学を学んでいる学生で、プログラミングについての知識はある程度はあるのですが、物理に関しては、高校程度の知識しかなく、困っていました。玉突きのシミューレートのプログラム開発は卒研でやっています。論文締め切りまでの残りの時間、可能な限り実際の現象に近いシミュレートができるよう、頑張っていきます。本当にありがとうございました。

matsuko-0420
質問者

補足

玉の衝突について、球一対一の衝突の現時点までにわかっている、運動方程式は以下の通りです。   もしよかったら、一対三の衝突(この三つの球は正三角状に並べられており、跳ね返り係数は1です)を教えてください。    1、衝突の原理 衝突前の2つの球の速度 赤玉の速度 v1 白玉の速度 v2=0 (止まっているから) 衝突後の2つの球の速度 赤玉の速度 v1 白玉の速度 v2 衝突したかどうかの判定 球の半径をr1,r2 各々の球の中心をo1,o2 微小量をεとする。 このとき r1+r2-ε<o1o2<r1+r2+ε の条件をみたせば衝突したことになる。 運動量保存の法則 運動量保存の法則;衝突前の2物体の運動量ベクトルの和は衝突後の2物体の運動量ベクトルに和に等しい。 衝突直前、赤玉の中心と白玉との接点とを結んだ方向をn方向、n方向に垂直な方向をt方向とする。運動量ベクトルをn方向とt方向に分けて考える。赤玉の衝突後の速度をv1’とする。白玉は衝突後、n方向にのみ動いていく。白玉の衝突後の速度をv2’とする。   運動量保存則は各成分ごとに成り立っているから、   n方向      m1v1 cosα =m1 v1n’+m2 v2n’    ―(1) t方向      m1v1 sinα =m2 v1t’     ―(2) v2t ‘=0 (白玉は衝突後n方向にしか動かない)       ―(3) 跳ね返り係数      -e=(v1n’-v2n ‘)÷(v1 cosα)    ―(4) e=1、m1 =m2 (2つの球の重さは等しい)として、 v1t’ 、v2t’、v1n’、v2n’ を求める。 式(1)より v1 cosα =v1n’+ v2n’     ―(5) 式(2)より   v1 sinα =v1t’       ―(6) 式(3)より   v2t ‘=0 式(4)より   -v1 cosα=v1n’-v2n ‘ ―(7) 式(5)+(7)より   2v1n’ =0     ∴v1n’ =0 ―(8) 式(8)を(5)に代入   v2n ‘= v1 cosα ―(9) 以上よりまとめると    v1n’ =0 v2n‘= v1 cosα v1t’ =v1 sinα v2t ‘=0       

関連するQ&A