DELPHIER

プログラミングを中心にした思いつきの書きとめ場所です。

2004年06月15日

衝突後の速度を求める計算

衝突後の速度を求めるための数式をWordで書いたものが見つかったので、
あげておきます。

Download file

2003年12月11日

質量と速度を考慮しつつめり込みを少し考えた衝突





結構よさげですね。ただ、Flashはオブジェクトの位置を変更すると、即反映されてしまうので、
たまにおかしく見えますね(まぁ僕が作っためりこみ補正処理が甘いからなんですが)。
ダブルバッファリングみたいな機能がFlashにはないのかな?
自前で実装するのも、なんか変な気分だし・・・。


2003年12月09日

衝突を考える 〜いつどこでぶつかるのか〜


今回は「めりこみが発生しないギリギリの状態である”接触”の状態を求める」ことによってめりこみを解消するための第一歩とします。



で、考えていたら、なんか昔同じようなことで悩んでいたことを思い出しました。






こういう考え方でいけるのかどうか・・・。
Physics for Game Developersを読んで、もう少し精進します。


[続きを読む..]

衝突を考える 〜衝突前後の速度を求める〜


まず、力学的エネルギー保存則、運動量保存則から連立方程式をたてる。
ここで、二つの物体obj1とobj2を考える。
それぞれ、質量をm1,m2、衝突前の速度をv1,v2、位置をr1,r2、
衝突後の速度をv1',v3'とすると



  • m1v1 + m2v2 = m1v1' + m2v2'

  • 1/2m1v1^2 + 1/2m2v2^2 = 1/2m1v3^2 + 1/2m2v4^2



となります。
これをばばっと解くと、v3,v4は



var a, b, c;
a = m1 + m1 * m1 / m2;
b = -2 * m1 * (m1 / m2 * v1 + v2);
c = (m1 * m1 / m2 - m1) * v1 * v1 + 2 * m1 * v1 * v2;

var v3, v4;
var sign = (v1 < v2) ? 1 : -1;
v3 = (-b + sign * Math.sqrt(b * b - 4 * a * c)) / (2 * a);
v4 = m1 / m2 * (v1 - v3) + v2;


a,b,cは解の公式をとくときによく出てくるアレです。
とまぁ、こんな感じで衝突後の速度が求まります。


[続きを読む..]

2003年12月07日

質量と速度を考慮した衝突

codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
WIDTH="320" HEIGHT="240" id="collision">
TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">


物体の質量、速度を考慮した運動をさせています。
摩擦のない、ツルッツルの床で転がしています(滑らせています)。



266224 Since 2005-05-01